linux下设置接收超时

来源:互联网 发布:炒股软件人气排行 编辑:程序博客网 时间:2024/04/28 00:31
    struct timeval timeout;
    timeout.tv_sec = 0;
    timeout.tv_usec = 1000*TIMEOUT;
    //设置接收超时

    setsockopt(sockfd,SOL_SOCKET,SO_RCVTIMEO,(char *)&timeout,sizeof(struct timeval));


出现错误1:在connect的时候发生 Operation now in progress 错误

解决方法:将上面的代码放到connect之后


出现错误2:recv没等到超时时间,立刻返回

解决方法:不应将socket设为非阻塞的,recv的第四个参数MSG_WAITALL改为0