socket通信怎么总是连接几次之后就连不上了!!

longzhuvc 2014-03-18 11:50:01
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;
}
...全文
526 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
longzhuvc 2014-03-18
  • 打赏
  • 举报
回复
客户端连接再断开,这样六七次之后就再也连不上了。。
青松2 2014-03-18
  • 打赏
  • 举报
回复
程序写的不太好
dengchonglin 2014-03-18
  • 打赏
  • 举报
回复
查查看是不是有哪些资源没释放吧~!
bbstr 2014-03-18
  • 打赏
  • 举报
回复
while (1){ if (recv(clientsocket, buf, 100, 0) == SOCKET_ERROR) { closesocket(clientsocket); break; } 这个最好放到一个进程里面去做,每次建立一个链接了,新建一个进程来处理收发。
91program 2014-03-18
  • 打赏
  • 举报
回复
多增加一些打印来分析一下吧

19,502

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
  • 嵌入开发(WinCE)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧