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

3
假设我有一个发送套接字和接收套接字。发送套接字发送总共1 GB的消息,但是接收套接字既不读取也不关闭套接字。在任一套接字关闭之前,这1 GB的消息会发生什么?它们是否还在操作系统缓冲区中等待?更具体地说: - 每个发送者都有自己的线程。 - 所有发送者都已刷新其输出流。 - 所有消息都通过环回接口传递。
1个回答

2

是的,数据将会在TCP/IP堆栈中的缓冲区中存储。不过这个缓冲区的大小远远小于1GB。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接