在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!