在哪个字段中存储了数字(字节)的ip地址?

时间:2014-09-10 23:32:58

标签: c sockets networking tcp ip

我想知道哪个字段是存储在的IP地址的数字32位表示。

您有以下API结构:

struct in_addr {
    uint32_t s_addr;
}

struct sockaddr_in {
    ...
    ...
    struct in_addr sin_addr;
    ...
}

我有以下代码:

 struct addrinfo addrCriteria;
  memset(&addrCriteria, 0, sizeof(addrCriteria));
  addrCriteria.ai_family = AF_INET;
  addrCriteria.ai_socktype = SOCK_STREAM;
  addrCriteria.ai_protocol = IPPROTO_TCP;

  struct addrinfo *addrList;

  int rtnVal = getaddrinfo(serverIP, portNumber, &addrCriteria, &addrList);
  if (rtnVal != 0) {
    printf("getaddrinfo() failed\n");
    exit(1);
  }

numericAddress = &((struct sockaddr_in *) addrList->ai_addr)->sin_addr;

  addrList->sin_port = htons(servPort);

请以粗体看这一行。我想在名为numericAddress的变量中保存ip地址的位表示。

numericAddress初始化为void *numericAddress;

我的问题是,我是否需要访问变量s_addr,它是in_addr结构中的一个字段,还是使用sin_addr来访问位值就足够了?

0 个答案:

没有答案