recv是阻塞函数,如果没有接收到数据,程序应该阻塞在那,就像accept那样。我在客户端写了接收程序,
for(int i=0;i<4;i++)
{
recv(sockClient,recvBuf,strlen(recvBuf)+1,0);
printf("12\n");
}
可是我发现,不开服务器端,直接运行客户端,程序并没有阻塞在recv,打印了四次12就退出了。请问这是什么原因?

解决方案 »

  1.   

    你没开服务端,也就是没有建立连接.客户端还在执行connect呢,recv没有执行.
      

  2.   

    判断返回值
    得连接上了,recv才阻塞
      

  3.   

    sockClient是无效的。也可以用WSAGetLastError()进一步获取错误原因
      

  4.   

    不开服务器端,连接不上返回错误信息,然后会执行printf
      

  5.   

    应该是没初始化socket吧...recv失败的.