本文介绍了有关获取主机的IPv4地址的问题?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述 29岁程序员,3月因学历无情被辞! Hello guys 我使用windows函数getaddrinfo来获取主机的IPv4地址。 struct addrinfo * aiList = NULL; struct addrinfo aiHints; // 在此初始化aiHints aiHints.ai_family = AF_INET; int iResult = getaddrinfo(szHostName,NULL,& aiHints,& aiList); const struct addrinfo * aiPtr = aiList; while (aiPtr!= NULL) { const struct sockaddr * pSockAddr = aiPtr-> ai_addr; // 此处打印pSockAddr代码的内容 aiPtr = aiPtr-> ai_next; } $ s $ b struct sockaddr的声明是: struct sockaddr { ushort sa_family; char sa_data [ 14 ]; }; 函数成功,本地主机的aiPtr-> ai_addr-> sa_data的值如下 {0,0,127,0 ,0,1,0,0,0,0,0,0,0,0,0,0} 为什么这里有两个前导零? 可能是ai_addr是struct sockaddr_in类型而且两个前导零是sockaddr_in的成员sin_port? struct sockaddr_in { short sin_family; unsigned short sin_port; struct in_addr sin_addr; char sin_zero [ 8 ]; } 我很困惑。任何机构都可以澄清发生了什么事吗? 提前致谢 编辑:原来的主题是: 关于get addrinfo返回的问题getaddrino 解决方案 当你使用 AF_INET ai_addr 成员指向 sockaddr_in 类型的对象。看看这里的示例 [ ^ ]。 Hello guysI use windows function getaddrinfo to get the IPv4 address of a host.struct addrinfo * aiList = NULL;struct addrinfo aiHints;//initialize aiHints hereaiHints.ai_family = AF_INET;int iResult = getaddrinfo( szHostName, NULL, &aiHints, &aiList );const struct addrinfo * aiPtr = aiList;while ( aiPtr != NULL ){ const struct sockaddr * pSockAddr = aiPtr->ai_addr;// print contents of pSockAddr code here aiPtr = aiPtr->ai_next;}declaration for struct sockaddr is:struct sockaddr { ushort sa_family; char sa_data[14];};The function succeed and the values of aiPtr->ai_addr->sa_data for localhost is as follows{ 0, 0, 127, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }Why two leading zeros here?May it be ai_addr is of type struct sockaddr_in and The two leading zeros is member sin_port of sockaddr_in?struct sockaddr_in{ short sin_family; unsigned short sin_port; struct in_addr sin_addr; char sin_zero[8];}I'm confused. can any body clarify whats happening?Thanks in advanceEdit: the original subject was this:Question about struct addrinfo returned by getaddrino 解决方案 When you use AF_INET the ai_addr member points to an object of type sockaddr_in. Take a look at the example here [^]. 这篇关于有关获取主机的IPv4地址的问题?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持! 上岸,阿里云!