socket通信怎么总是连接几次之后就连不上了!!
DWORD WINAPI sServer(LPVOID pArg)
{
int len = sizeof(SOCKADDR_IN);
SOCKET serversocket, clientsocket;
SOCKADDR_IN serveraddr, clientaddr;
WSADATA ws;
WSAStartup(MAKEWORD(2, 0), &ws);
if (((serversocket = socket(AF_INET, SOCK_STREAM, 0)) == INVALID_SOCKET))
{
return -1;
}
serveraddr.sin_family = AF_INET;
serveraddr.sin_port = htons(8001);
serveraddr.sin_addr.S_un.S_addr = htonl(INADDR_ANY);
if (bind(serversocket, (SOCKADDR *)&serveraddr, sizeof(serveraddr)) == SOCKET_ERROR)
{
return -1;
}
if (listen(serversocket, 5) == SOCKET_ERROR)
{
return -1;
}
while(1)
{
clientsocket = accept(serversocket, (SOCKADDR *)&clientaddr, &len);
while (1){
if (recv(clientsocket, buf, 100, 0) == SOCKET_ERROR)
{
closesocket(clientsocket);
break;
}
//send(clientsocket, reply, 100, 0);
//servermsg =(TCHAR *) &buf;
//PostMessage(hwnd,WM_PAINT,NULL,(LPARAM)servermsg);
//int errordata = GetLastError();
//MessageBox(hwnd,(LPCWSTR)errordata,TEXT("post"),MB_OKCANCEL);
memset(buf, 0, 100);
}
closesocket(clientsocket);
}
//closesocket(clientsocket);
WSACleanup();
return 0;
}