服务程序的线程中WSAStartup初始化成功,创建SOCKET报10093错误
一个服务程序,在线程加入提供网络服务,使用控制台程序,程序不会出错
WSADATA wsaData;
int wsaret=WSAStartup(MAKEWORD(2,2),&wsaData);
if(wsaret!=0)
{//此处不报错
return ;
}
sockaddr_in local;
local.sin_family=AF_INET;
local.sin_addr.s_addr=INADDR_ANY;
local.sin_port=htons((u_short)20248);
server=socket(AF_INET,SOCK_STREAM,0);
if(server==INVALID_SOCKET)
{
//到此处报10093的错误
[解决办法]
10093:应用程序没有调用 WSAStartup,或者 WSAStartup 失败。
[解决办法]
服务程序权限更高,也会运行在session0,注意这些跟普通应用程序的区别
[解决办法]
bool InitWinSocket()
{
WSADATA wsd;
if ( 0 != WSAStartup(MAKEWORD(2,2), &wsd) )
{
return false;
}
if ( 2 == LOBYTE(wsd.wVersion) && 2 == HIBYTE(wsd.wVersion) )
{
return true;
}
return false;
}
wsd的版本信息如果不是2.2的话,WSAStartup还是失败的。