【问题标题】:Understanding struct sockaddr了解结构 sockaddr
【发布时间】:2011-11-16 21:56:57
【问题描述】:
struct sockaddr {
    unsigned short sa_family;   // address family, AF_xxx
    char           sa_data[14]; // 14 bytes of protocol address
};

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

这是否意味着像 TCP/UDP 这样的协议有“地址”?好吧,我认为协议可以是识别号而不是地址。

无论如何,如果是,那么他们的家庭是根据什么划分的?

【问题讨论】:

    标签: sockets networking network-programming network-protocols


    【解决方案1】:

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

    sockaddr 用作一组地址结构的基础,这些地址结构的作用类似于可区分的联合,请参阅the Beej guide to networking。你一般看sa_family,然后转换成合适的地址族的具体地址结构。

    TCP 和 UDP 本身没有特定的地址,而是 IP 级别对于 IPv4 和 IPv6 有不同的地址大小。

    另见:

    【讨论】:

    【解决方案2】:

    我在尝试在 C/C++ 中复制 jnetpcap getHardwareAddress() 方法时发现了这一点。当 sa_family 为 17 (0x11, AF_PACKET) 时,MAC 地址包含在字节 10-15 中。

    【讨论】:

      猜你喜欢
      • 2015-11-30
      • 1970-01-01
      • 2014-04-26
      • 1970-01-01
      • 2010-11-19
      • 1970-01-01
      • 1970-01-01
      • 2020-05-10
      • 2016-04-27
      相关资源
      最近更新 更多