我在服务器与客户机之间我想用FOR循环
比如
服务器
for(i = 0;i 〈3 ; i++)
{
send();
}
客户机
for (i = 0;i 〈 3; i++)
{
recv();}这样一运行后就死了
不知道是为什么啊

解决方案 »

  1.   

    阻塞模式的socket是这样的。recv如果没有数据可以接收就阻塞了。
      

  2.   

    考虑使用非阻塞模式吧。或者在recv之前使用select来判断是否有数据接收。
      

  3.   

    哪位大侠能说的清楚啊,我是个新手
    只要说SELECT怎么具体用,或者说如何设置成非阻塞模式
      

  4.   

    可这不是一句两句就可以说清楚的。这样吧:
    DWORD dwSize = 0;
    Sleep(1000);
    int iReturnCode = ioctlsocket(g_SocketToServer,FIONREAD,&dwSize);这样dwSize为可读数据长度。如果要求高,那么就使用异步方式。
      

  5.   

    象你这种情况,先开客户端也没用。
    因为你是循环发送,你的本意是发3次,接3次,但由于网络传输的问题,往往
    会三次的数据来了,一个recv就全接下来了。这样你的另两个recv就会继续等待,阻塞。
    改为非阻塞吧
      

  6.   

    for(i = 0;i 〈3 ; i++)
    {
    send();
    Sleep(2000);
    }
    客户机
    for (i = 0;i 〈 3; i++)
    {
    recv();
    Sleep(2000);}