【问题标题】:what does error code "5" mean in winsock2?winsock2中的错误代码“5”是什么意思?
【发布时间】:2020-07-17 09:02:42
【问题描述】:

我正在使用 winsock2 库制作一个简单的客户端-服务器应用程序,但是当我尝试打开套接字时收到“5”错误代码,但 the documentation 中的第一个错误代码是“6”。问题是,我不明白是什么原因导致程序退出。

int sockfd;
if ( (sockfd = socket(AF_INET, SOCK_DGRAM, 0)) < 0 ) {
    perror("socket creation failed");
    #ifdef OS_WINDOWS
    std::cerr << WSAGetLastError() << std::endl;
    #endif
    exit(EXIT_FAILURE);
}

【问题讨论】:

  • 改用GetLastError。那是“ERROR_ACCESS_DENIED”。此外,该 WSA 错误文档显示了错误数值之间的巨大跳跃。我相信这是为了匹配 GetLastError 中的相同错误代码。
  • 您应该发布minimal reproducible example。没有迹象表明您在发出其他调用以创建套接字之前是否调用了 WSAStartup
  • 好吧,其实我没有调用WSAStartup,让我试试
  • 这可能就是为什么:P

标签: c++ winsock2


【解决方案1】:

WSAGetLastError 返回的错误代码是GetLastError 返回的错误代码的子集。

由于GetLastErrorWSAGetLastError 返回的所有错误的超集,因此调用GetLastError 将产生与调用WSAGetLastError 相同的错误值,以及任何与Winsock 无关的错误。

5 返回码是ERROR_ACCESS_DENIED。为什么会出现此错误是另一回事。

the following link explaining what may cause this issue

【讨论】:

    猜你喜欢
    • 2015-05-18
    • 1970-01-01
    • 1970-01-01
    • 2015-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多