我想知道哪个字段是存储在的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来访问位值就足够了?