【发布时间】:2013-03-21 09:11:23
【问题描述】:
假设我有一个发送方套接字和一个接收方套接字。发送方socket发送总共1GB的消息,接收方socket既不读取也不关闭socket。
在任一套接字关闭之前 1GB 的消息会发生什么?它们是否位于操作系统缓冲区的某个位置?
更具体一点...
- 每个发件人都有自己的线程。
- 所有发件人都已刷新其输出流。
- 所有消息都通过环回接口传递
【问题讨论】:
标签: java sockets networking io
假设我有一个发送方套接字和一个接收方套接字。发送方socket发送总共1GB的消息,接收方socket既不读取也不关闭socket。
在任一套接字关闭之前 1GB 的消息会发生什么?它们是否位于操作系统缓冲区的某个位置?
更具体一点...
【问题讨论】:
标签: java sockets networking io
是的,数据将位于 TCP/IP 堆栈的缓冲区中。虽然远远小于 1Gb。
假设您使用 TCP - 它采用流量控制来处理这种情况,接收器缓冲区将填满。当接收缓冲区已满时,发送者将停止传输。发送方缓冲区会填满,当它满时,应用程序的 write/send 调用将阻塞,直到接收方开始消费数据或发生错误
【讨论】: