- 论坛徽章:
- 0
|
socket的io操作为什么有的时候会阻塞?
服务器:
while(true)
{
msgsock=accept(..);
send(..);
clsesocket(msgsock);
}
tv.tv_sec=10;
tv.tv_usec=0;
客户端:
while(c<3)
{
c++;
sock=socket(AF_INET, SOCK_STREAM,0); server.sin_family=..
server.sin_port=..
server.sin_addr.S_un.S_addr=..
connect(sock,(const sockaddr*)&server,sizeof(server))
memset(buf,0,sizeof(buf));
FD_ZERO(&fdread);
FD_SET(sock,&fdread);
ioctlsocket(sock,FIONBIO,&b); //这句话效果加不加都一样
if(ret=select(0,NULL,&fdread,NULL,&tv)<0)
{
printf("\nselect error" ;
exit(0);
}
else printf("%d",ret);
if(FD_ISSET(sock,&fdread))
recv(...);
closesocket(sock);
sock=NULL;
Sleep(50);
}
为什么ret总是0呢?而且select总是立刻返回,不论超时设为多少?怎么回事啊? |
|