一个服务程序,在线程加入提供网络服务,使用控制台程序,程序不会出错
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的错误
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的错误
addr.sin_family=AF_INET;
addr.sin_addr.S_un.S_addr=INADDR_ANY;
addr.sin_port=htons(4000);
m_hSocket=socket(AF_INET,SOCK_STREAM,0);
local.sin_addr.S_un.S_addr=INADDR_ANY; 改成这句了
{
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还是失败的。
刚开始放在线程中初始化的,怎么调试也不行,但提示是WSAStartup
调试成功,怀疑是在系统服务程序中线程的问题,某些东西没有搞明白。