堵塞方式的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连接了.
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。
客户端
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连接了.
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。
- 上一篇文章: 打开文件提示输入密码框,该功能如何做?
- 下一篇文章: 测试string的4个函数有错误,错在哪里?