我用send发送一个长为len1的数据包时,是不是应该用while判断一下,如果当前发送的数目不足len1,则继续发送。而不是假设send每次都能发送出去len1那么多的数据???我用select函数判断一个套接字上有数据可读时,如果recv的长度为0,则代表这个套接字已经被关闭了。如果recv的数据长度不为0,那么是不是应该用一个while循环一直recv数据,直到recv的结果为0,代表数据都读取完了???

解决方案 »

  1.   

    recv一次就可以了,你用while循环怎么判断数据读完了?
    如果你的socket是阻塞的,那没数据时不就一直阻塞在哪里了么?
    select要着还有什么用?你的疑惑反过来思考一下问题就清晰了如果你一次recv没收完下次再select还是有可读信号的
      

  2.   

    我用send发送一个长为len1的数据包时,是不是应该用while判断一下,如果当前发送的数目不足len1,则继续发送。而不是假设send每次都能发送出去len1那么多的数据???
    ---------------------------------------------------------
    可以