Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何获取getaddrinfo()错误代码?_C++_Sockets_Winapi_Winsock - Fatal编程技术网

C++ 如何获取getaddrinfo()错误代码?

C++ 如何获取getaddrinfo()错误代码?,c++,sockets,winapi,winsock,C++,Sockets,Winapi,Winsock,从报告中可以看出: getaddrinfo函数 返回值 成功归零。失败返回非零Windows套接字错误代码,如在Windows套接字错误代码中找到的 使用gai_strerror函数根据getaddrinfo函数返回的EAI代码打印错误消息。提供gai_strerror函数是为了符合IETF建议,但它不是线程安全的因此,建议使用传统的Windows套接字函数,如WSAGetLastError。 它说EAI错误代码可以在中找到,但我在该页面中看不到任何EAI代码,例如EAI_、EAI_BADGLA

从报告中可以看出:

getaddrinfo函数

返回值

成功归零。失败返回非零Windows套接字错误代码,如在Windows套接字错误代码中找到的

使用gai_strerror函数根据getaddrinfo函数返回的EAI代码打印错误消息。提供gai_strerror函数是为了符合IETF建议,但它不是线程安全的因此,建议使用传统的Windows套接字函数,如WSAGetLastError。

它说EAI错误代码可以在中找到,但我在该页面中看不到任何EAI代码,例如EAI_、EAI_BADGLAGS等


对于Windows,获取代码的正确方法是检查
getaddrinfo
是否返回非零值,然后调用
WSAGetLastError
获取代码?

是的,标准方法是使用
getaddrinfo
如果返回非零值,则调用
WSAGetLastError
检索Winsock错误代码

然后,您可以使用将
FORMAT\u MESSAGE\u FROM\u SYSTEM
作为
dwFlags
参数传递,并将错误代码作为
dwMessage
参数传递,从而将错误代码转换为人类可读的字符串。您可以在
格式化\u消息\u FROM\u SYSTEM
下的表格中查看此行为的文档。Asesh指出,其中有一些示例代码演示了这一点

您可以像在Linux系统上一样使用
gai_strerror
,但是(搜索
gai_strerror
),它不是线程安全的,因此首选
FormatMessage


或者,您可以手动交叉引用它们。

Ya您可以使用WSAGetLastError,下面是如何检索相应字符串:“它说可以在Windows套接字错误代码页面中找到EAI错误代码”。没有。它在该MSDN页面上提供了一个映射。