【发布时间】: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