LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 696|回复: 2

关于select函数的问题

[复制链接]
发表于 2008-6-18 16:39:49 | 显示全部楼层 |阅读模式
我的程序中有这样的一段代码

if(select(thread_sock + 1, &rfdset, NULL, NULL, &tv ) >0)
    {  
       if((recv_len=recv(thread_sock,buffer,1024,MSG_WAITALL))<1)
           {
           g_print("Can not receive data from server,abort%d",thread_task->slice_num);
             close(thread_sock);
        if(thread_task->detail->slice_info[thread_task->slice_num].trys<=30)
          {  sleep(2);
             http_downloader(thread_task);
             thread_task->detail->slice_info[thread_task->slice_num].write_len=0;
             return ;
              }
               
        else  
         
         {  thread_task->detail->slice_info[thread_task->slice_num].failed=TRUE;
            thread_task->detail->task_finished=FALSE;
            thread_task->detail->slice_info[thread_task->slice_num].trys=0;
            g_print("退出了");
            return ;
            }
        }//if(recvlen)
    }//if(select)

我的问题是为什么select返回值大于0,但是在recv的时候却收不到数据呢?
发表于 2008-6-19 09:17:17 | 显示全部楼层
对方没有发送数据,直接关闭了连接。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-6-19 10:56:09 | 显示全部楼层
我查看了一下errno,是Connection reset by peer,不知道这个问题是什么原因造成的?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表