关于网络编程多线程死循环问题
wsig 2010-04-01 12:36:14 关于网络编程多线程死循环问题,我写一个聊天服务器程序,基于TCP的,
WSADATA wsaData;
if( WSAStartup(MAKEWORD(2,2),&wsaData)!=0)//初始化WSA 调用成功则返回0
{
MessageBox(NULL,"初始化失败","",MB_OK);
WSACleanup();
}
SOCKET ServerSock = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP); //SOCK_STREAM 流式套接字
//IPPROTO_TCP TCP协议 用于流式套接字
if(INVALID_SOCKET ==ServerSock)
{
MessageBox(NULL,TEXT("创建套接字失败"),"",MB_OK);
WSACleanup();
}
sockaddr_in server;
server.sin_addr.S_un.S_addr = INADDR_ANY; //本机ip
server.sin_family = AF_INET ; //指定通信协议
BOOL Err;
UINT Port =GetDlgItemInt(hwnd,IDC_PORT,&Err,TRUE);
server.sin_port = htons(Port); //主机字节顺序转成网络字节顺序
if(bind(ServerSock,(LPSOCKADDR)&server,sizeof(server))==SOCKET_ERROR)
{
MessageBox(NULL,TEXT("绑定套接字失败"),"",MB_OK);
closesocket(ServerSock);
}
if(listen(ServerSock,5)==SOCKET_ERROR)
{
MessageBox(NULL,TEXT("监听失败"),"",MB_OK);
closesocket(ServerSock);
}
SetDlgItemText(hwnd,IDC_SYSTEMMSG,TEXT("服务器正在监听....."));
SOCKET TcpSocket;
SOCKADDR_IN TcpClientAddr;
while(1)
{
int alen;
TcpSocket=accept(ServerSock,(SOCKADDR*)&TcpClientAddr,&alen);
if(TcpSocket<0)
{
exit(1);
}
........
}
在上面的循环中为什么会出现死循环呢 我在这个循环中用accept不断接收连接请求,到底哪错了啊