有关获取主机的IPv4地址的问题? [英] Question about getting IPv4 address of a host?
问题描述
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 < span class =code-keyword> 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
类型的对象。看看这里的示例 [< a href =http://msdn.microsoft.com/en-us/library/windows/desktop/ms737530(v=vs.85).aspx\"target =_ blanktitle =New Window> ^ 一>]。
Hello guys
I use windows function getaddrinfo to get the IPv4 address of a host.
struct addrinfo * aiList = NULL;
struct addrinfo aiHints;
//initialize aiHints here
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;
// 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 advance
Edit: the original subject was this:
Question about struct addrinfo returned by getaddrino
When you useAF_INET
theai_addr
member points to an object of typesockaddr_in
. Take a look at the example here [^].
这篇关于有关获取主机的IPv4地址的问题?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!