【问题标题】:What happens to messages sent by sending socket but never read by receiving socket?发送套接字发送但接收套接字从未读取的消息会发生什么?
【发布时间】:2013-03-21 09:11:23
【问题描述】:

假设我有一个发送方套接字和一个接收方套接字。发送方socket发送总共1GB的消息,接收方socket既不读取也不关闭socket。

在任一套接字关闭之前 1GB 的消息会发生什么?它们是否位于操作系统缓冲区的某个位置?

更具体一点...

  • 每个发件人都有自己的线程。
  • 所有发件人都已刷新其输出流。
  • 所有消息都通过环回接口传递

【问题讨论】:

    标签: java sockets networking io


    【解决方案1】:

    是的,数据将位于 TCP/IP 堆栈的缓冲区中。虽然远远小于 1Gb。

    假设您使用 TCP - 它采用流量控制来处理这种情况,接收器缓冲区将填满。当接收缓冲区已满时,发送者将停止传输。发送方缓冲区会填满,当它满时,应用程序的 write/send 调用将阻塞,直到接收方开始消费数据或发生错误

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-06-18
      • 2019-07-04
      • 1970-01-01
      • 2018-09-24
      • 1970-01-01
      • 2010-11-14
      • 2021-10-29
      • 2012-01-26
      相关资源
      最近更新 更多