struct sockaddr {
unsigned short sa_family; // address family, AF_xxx
char sa_data[14]; // 14 bytes of protocol address
};
在这个结构中,sa_family
描述的地址族究竟是什么意思?
是否意味着像TCP / UDP这样的协议有“地址”?嗯,我认为协议可以是识别号而不是地址。
无论如何,如果是的话,那么他们的家庭在什么基础上分裂?
答案 0 :(得分:20)
地址的格式和大小通常是协议特定的。
sockaddr
用作一组地址结构的基础,这些地址结构就像一个有区别的联合,参见https://beej.us/guide/bgnet/html/multi/sockaddr_inman.html。您通常会查看sa_family
,然后转换为相应地址系列的特定地址结构。
TCP和UDP没有特定于它们的地址,而是IP级别具有不同的IPv4和IPv6地址大小。
另见:
答案 1 :(得分:0)
我试图在C / C ++中复制jnetpcap getHardwareAddress()方法时发现了这一点。当sa_family为17(0x11,AF_PACKET)时,包含MAC地址,字节为10-15。