Socket网络通信,错误代码10093 的解决方法

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

发表评论