在Socket编程中,Socket没有正常打开,通过GetLastError()得到错误代码10093,查找ErrorMessage有如下提示:应用程序没有调用WSAStartup,或者WSAStartup调用失败,本博客对可能的原因进行总结分析,并提供解决方法。
1.未检查库版本,或者WSACleanup()的调用次数多余WSAStartup
可以在开始Socket之前加入如下代码,启动WSAStartup:
WSADATA wsaData;
WSACleanup();
int wVersionRequested = MAKEWORD(2, 2);
int err = WSAStartup(wVersionRequested, &wsaData);
int brdcFd;
if ((brdcFd = socket(PF_INET, SOCK_DGRAM, 0)) == -1){
int nCodeError = ::GetLastError();
printf("socket fail\n");
return -1;
}
编译完代码,保险起见,记得重启电脑
2.如果上述方法无效,需要重置网络
在cmd窗口中运行,netsh winsock reset
依旧记得重启电脑。
OK,See You Next Chapter!