假设前者是SendBuf,后者是SendSize.SendBuf必须是比SendSize大吗?我学习的一些代码里,buf都是size的4倍.他们可以相等吗?
buf可以比size小吗?
如果这样,会有什么区别,会造成什么情况?

解决方案 »

  1.   

    在send()的时候,返回的是实际发送出去的字节(同步)或发送到socket缓冲区的字节
    (异步);系统默认的状态发送和接收一次为8688字节(约为8.5K);在实际的过程中发送数据
    和接收数据量比较大,可以设置socket缓冲区,而避免了send(),recv()不断的循环收发:
    // 接收缓冲区
    int nRecvBuf=32*1024;//设置为32K
    setsockopt(s,SOL_SOCKET,SO_RCVBUF,(const char*)&nRecvBuf,sizeof(int));
    //发送缓冲区
    int nSendBuf=32*1024;//设置为32K
    setsockopt(s,SOL_SOCKET,SO_SNDBUF,(const char*)&nSendBuf,sizeof(int));
      

  2.   

    SendSize是一次发送到对方的数据,仅此而已,貌似没太大联系吧.SendSize大于缓冲区,那多余的数据就丢失咯.
      

  3.   

    谢谢hairetz,想再问:在异步的情况下,怎么控制发送速度,由这两个函数中的哪个控制?
      

  4.   

    发送速度要看你的网络情况,当然2个都设置大点速度理论上会快些。  计算发送速度要看send的返回值
      

  5.   

    控制速度可以sleep,发送一点sleep一下