了解struct sockaddr

Aqu*_*irl 18 sockets networking network-programming network-protocols

struct sockaddr {
    unsigned short sa_family;   // address family, AF_xxx
    char           sa_data[14]; // 14 bytes of protocol address
};
Run Code Online (Sandbox Code Playgroud)

在这个结构中,究竟是什么意思地址家族所描述的sa_family

这是否意味着像TCP/UDP这样的协议有"地址"?嗯,我认为协议可以是识别号码而不是地址.

无论如何,如果是,那么他们的家庭在什么基础上被划分?

Len*_*ate 20

地址的格式和大小通常是协议特定的.

sockaddr用作一组地址结构的基础,这些地址结构就像一个有区别的联合,参见http://www.retran.com/beej/sockaddr_inman.html.您通常会查看sa_family然后转换为适当的地址族的特定地址结构.

TCP和UDP没有特定于它们的地址,而是IP级别具有不同的IPv4和IPv6地址大小.

也可以看看:

  • 否 - IPv6地址为16个字节.在过去,这是一个任意的最大值,但它是为了方便而不是硬限制. (3认同)
  • MSDN 对于 Posix 并不具有权威性。请参阅 Posix 规范而不是供应商特定文档:http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/sys_socket.h.html 和 http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/netinet_in .h.html (2认同)