通过发送套接字但从未通过接收套接字读取的消息会发生什么?

时间:2013-03-30 22:09:25

标签: java sockets networking io

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

在套接字关闭之前,1GB的消息会发生什么?他们坐在OS缓冲区的某个地方吗?

更具体......

  • 每个发件人都有自己的主题。
  • 所有发件人都刷新了输出流。
  • 所有消息都由loopback接口传递

1 个答案:

答案 0 :(得分:1)

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

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