gpt4 book ai didi

c++ - 使用 WSAAddressToString 时的问题

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:37:16 25 4
gpt4 key购买 nike

问题: 我正在尝试使用 WSAAddressToString 函数来获取计算机的 ip 地址。我浏览了他们网站上的 msdn 文档,其中有太多结构中的结构,我觉得那是我出错的地方。 pastebin link here 中提供了代码.请让我知道我到底哪里出错了。

解答:在代码中包含WSAStartup 函数并对现有代码进行一些修改后,该问题已得到解决。完整代码在pastebin中,修改部分如下。

     retval = WSAStartup(MAKEWORD(2, 2), &wsaData);
if (retval != 0)
{
printf("WSAStartup() failed with error code %d\n", WSAGetLastError());
return 1;
}
else
printf("WSAStartup() is OK...\n");


size=256;

lp=pAddresses->FirstUnicastAddress->Address.lpSockaddr;
size2=pAddresses->FirstUnicastAddress->Address.iSockaddrLength;
if(WSAAddressToStringA(lp,size2,NULL,op,&size)!= 0)
{
printf("This thing has failed \n");
printf("errordetail: %i\n", WSAGetLastError());

return 1;
}
else
printf("\t The ip address is = %s\n", op);

最佳答案

请更改此:

if(WSAAddressToString(lp,size2, NULL,op,&size) != 0) {
printf("This thing has failed \n");
return 1;
} else
printf("Address string = %s\n", op);
pAddresses = pAddresses->Next;
}

对此:

long errorcode = WSAAddressToString(lp,size2, NULL,op,&size);
if(errorcode != 0) {
printf("The error is number: %i\n", errorcode);
return 1;
} else
printf("Address string = %s\n", op);
pAddresses = pAddresses->Next;
}

然后告诉我们它打印的是什么数字。

或者在http://msdn.microsoft.com/en-us/library/windows/desktop/ms681381%28v=vs.85%29.aspx中查找

编辑:

SOCKADDR_IN6 addrTemp;
addrTemp.sin6_family = AF_INET6;
long errorcode = WSAAddressToString(&addrTemp,size2, NULL,op,&size);
if(errorcode != 0) {
//printf("The error is number: %i\n", errorcode);
printf("errordetail: %i\n", WSAGetLastError());
return 1;
} else
printf("Address string = %s\n", op);
pAddresses = pAddresses->Next;
}

关于c++ - 使用 WSAAddressToString 时的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17379741/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com