若sendBuf大小为100,要发送数据大小为20,请问socket发送时是发送数据的大小是20还是100?
recvBuf大小也为100,其接收到的数据为20还是100?
如何根据发送数据的大小设置Buf的大小?

解决方案 »

  1.   

    可以设置socket协议栈,如粘包
    为了改善传输效率,没必要把缓冲区设置为包的大小
      

  2.   

    setsockopt(..., SO_SNDBUF/SO_RCVBUF, ...);
    设置系统的发送/接收缓冲区的大小
      

  3.   

    你要发20就是20啊  你客户买20斤的东西(有效数据)  你因为最小只有50斤的袋子(sendBuf大小)  难道你就要给客户送50斤去?
      

  4.   

    根据你实际send时指定的长度而定,最总发送成功的数量参考send函数返回值。
      

  5.   

    Send函数本来就有指定的长度参数int send(
      SOCKET s,
      const char* buf,
      int len, //这个参数
      int flags
    );只要保证len比buf的实际长度长就可以了。
      

  6.   

    如果你就Send一次,就是发多少,缓冲区接到的是多少,但是如果连续多次发送很快地话,就不一定了.