咨询大家一下:socket在收发数据的时候,有一个默认的系统收缓冲区和发缓冲区,这两个缓冲区是多大?
如果网络对端发送数据很快,超过了本端接收缓冲区的容量,那么溢出的数据包会被丢弃吗?

解决方案 »

  1.   

    现在的windows系统一般默认8192,其它系统默认的可能不一样,有的为4096UDP在发送接收时会有丢弃的情况发生,如发送过快,或者来不及处理接收缓冲中的数据
    TCP发送接收不存在所谓丢弃的问题
      

  2.   

    TCP永远不会丢包的,如果这次发送的过多,而系统默认缓冲区发送不了这么多的话,就下一次再发,不会出现丢的情况。
      

  3.   

    TCP 也是会丢包的, 默认的是重传19次!
      

  4.   

    额 ,想知道内部真相
    请问那里有TCP机制的详细介绍?谢谢了
      

  5.   


    这个是TCP协议栈处理的东西,做应用的话,不需要关心.19次以后,连接就被复位了,发送得到WSAECONNRESET错误,也就是此时是断开连接了,该socket被废弃了
      

  6.   

    发送之前可以先select一下,看看可写不