hur.cn - 华软网

 热门搜索

堵塞方式的winsock是不是不能多次接受数据

  作者:未知    来源:网络    更新时间:2011/9/8
客户端多次发送数据给服务端

 客户端

while(1)
 {
 result=send(clientsocket,buffsend,100,0);

  if(result<100)
 {


  printf("send message failed\n");


  printf("错误代码为:%d\n",GetLastError());
closesocket(clientsocket);   


  WSACleanup();

  return 0;

 }


服务端
while(1)
{


newsocket=accept(serversocket,(struct sockaddr *) &clientaddr,&size);  //第二次,这里就被堵住了

int dataCount=recv(newsocket,buffrecv,100,0);

if(dataCount<=0) 
{
printf("receive error:\n");
break;
}

printf("receive: %s\n",buffrecv);


}  //end while


accept是赌赛函数,第二次接受的时候果然被堵住,无法往下运行了。。。。

怎么办
---华软 网友回答---
accept后启动一个线程,循环调用recv来接收
---华软网友回复---
你recv要用循环读取,直到读到0才跳出来。
---华软网友回复---
accept对应的是connect,连接已经建立就只调用recv了,accept对应的是一个新的socket连接了.      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。