【问题标题】:Why do we need a separate structure to hold the 32-bit IPv4 address为什么我们需要一个单独的结构来保存 32 位 IPv4 地址
【发布时间】:2020-12-05 09:43:55
【问题描述】:

对于 IPv4 地址的套接字编程,我们需要使用以下结构来设置客户端/服务器的地址。

struct in_addr {

  in_addr_t s_addr; 
};

struct sockaddr_in {
 sa_family_t sin_family;
 in_port_t sin_port;
 
 struct in_addr sin_addr;
 char sin_zero[8];
}

我的问题是为什么我们需要结构 in_addr?我们不能把 in_addr_t 字段放在 sockaddr_in 中吗?

【问题讨论】:

    标签: c sockets network-programming


    【解决方案1】:

    它是特定于平台的。在 Windows 上,in_addr 定义为以下结构,它允许您访问地址的个人 bytes 和 shorts (documentation):

    struct in_addr {
      union {
        struct {
          u_char s_b1;
          u_char s_b2;
          u_char s_b3;
          u_char s_b4;
        } S_un_b;
        struct {
          u_short s_w1;
          u_short s_w2;
        } S_un_w;
        u_long S_addr;
      } S_un;
    };
    

    【讨论】:

      猜你喜欢
      • 2023-04-07
      • 1970-01-01
      • 1970-01-01
      • 2015-01-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-05
      • 2021-05-23
      相关资源
      最近更新 更多