send(socket,buffer,len,0);如果数据很多,有可能被自动分成多块来发送
要怎么才知道,已经完成了呢?

解决方案 »

  1.   

    无解,tcp数据本来就是流式的,没有所谓的开始结束除非你靠自定义协议来指定本次需要接收多少数据,然后就可以在收到那么多数据后就认为已经收完了
      

  2.   

    如果buffer  len数据较长,循环发送
    int slen = 0;
    int ret = 0;
    while((len-slen)>0)
    {
        ret = send(socket,buffer + slen,len-slen,0);
        if(ret > 0)
        {
            slen += ret;
        }
        else
           break;
    }
      

  3.   

    建议你这样:1、接收socket发送请求(使用阻塞socket)2、发送socket应答返回数据给接收socket
     
    依次循环1、2 保证顺序和数据完整
      

  4.   

    根据长度,循环接收,注意recv的返回值
      

  5.   

    socket是不知道的,要你告诉他。你自己定义一个协议吧。
      

  6.   

    循环读取,如果流里已经没有数据了,recv方法会返回0