C++ 如何获取getaddrinfo()错误代码?
从报告中可以看出: getaddrinfo函数 返回值 成功归零。失败返回非零Windows套接字错误代码,如在Windows套接字错误代码中找到的 使用gai_strerror函数根据getaddrinfo函数返回的EAI代码打印错误消息。提供gai_strerror函数是为了符合IETF建议,但它不是线程安全的因此,建议使用传统的Windows套接字函数,如WSAGetLastError。 它说EAI错误代码可以在中找到,但我在该页面中看不到任何EAI代码,例如EAI_、EAI_BADGLAGS等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
对于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页面上提供了一个映射。