假设我有一个发送方套接字和一个接收方套接字。 sender socket发送一共1GB的消息,receiver socket既没有读取也没有关闭socket。
在任一套接字关闭之前,1GB 的消息会发生什么变化?它们位于操作系统缓冲区的某个位置吗?
更具体地说...
- 每个发件人都有自己的线程。
- 所有的发送者都刷新了他们的输出流。
- 所有消息都通过loopback接口(interface)传递
最佳答案
是的,数据将位于 TCP/IP 堆栈的缓冲区中。尽管它远小于 1Gb。
假设您使用 TCP - 它采用流量控制来处理这种情况,接收缓冲区将填满。当接收缓冲区已满时,发送方将停止传输。发送方缓冲区将填满,当它已满时,应用程序写入/发送调用将阻塞,直到接收方开始使用数据或发生错误
关于java - 通过发送套接字发送但从未被接收套接字读取的消息会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15724054/