我刚开始接触套接字编程。我不明白如何通过仅声明 sockaddr_storage 然后创建一个套接字 listen(),所有传入的连接都会自动存储在 sockaddr_storage 中。如果声明 5 个 sockaddr_storage 会怎么样?
最佳答案
How exactly does sockaddr_storage work?
sockaddr_storage
是一种大到足以为任何支持的协议(protocol)保存套接字地址的类型(sockaddr_in
用于 IPv4,sockaddr_in6
用于 IPv6,sockaddr_un
用于 UNIX 域,sockaddr_bth
用于蓝牙等)。
I don't understand how by just declaring sockaddr_storage and then make a socket listen(), all the incoming connections just automatically get stored in sockaddr_storage.
那是因为他们没有。
您必须将 sockaddr_storage
传递给一个用套接字地址填充它的函数,例如 accept()
、getsockname()
、 getpeername()
等
What if you declare 5 sockaddr_storage?
然后你有 5 个 sockaddr_storage
类型的变量。没有什么特别的事情发生。这就像你问“如果你声明 5 个整数怎么办?”您仍然需要以某种方式填充它们。
关于c - sockaddr_storage 究竟是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38801292/