当前位置:  开发笔记 > 运维 > 正文

关于TCP连接缓冲区的问题

如何解决《关于TCP连接缓冲区的问题》经验,为你挑选了1个好方法。

Linux操作系统.

我在两台计算机之间有一根以太网电缆.C中的简单服务器 - 客户端程序,用于将文件从客户端传输到服务器.客户端从文件中读取100个字节的数据并将其发送到服务器,然后在发送下一个数据包之前等待2秒.

当客户端发送数据时,我拔出了服务器端的以太网电缆,因为连接断开,我预计客户端会出现一些错误.但是客户端继续将数据写入管道,服务器没有收到任何东西(但仍在等待接收).Client发送整个文件并停止.现在,我再次连接以太网电缆,服务器接收客户端发送的所有数据.这怎么可能?数据包是否存储在某个缓冲区中并在连接时再次发送?

很抱歉让它太久了.



1> derobert..:

TCP的重点是提供可靠的数据传输,尽管下面有一个不可靠的网络.基本上,它的工作方式是TCP只考虑从远程机器收到确认数据包后发送的数据; 在那之前,内核在本地存储数据.它将被缓冲的时间可能相当长,具体取决于一系列设置/proc以及测量的网络参数.

编辑:应用程序可以使用SIOCOUTQioctl 检查未完成发送队列的大小; 请参阅tcp(7)联机帮助页.同一个联机帮助页也讨论了错误处理.

如果您希望丢失数据而不是缓冲数据,请使用UDP.

推荐阅读
赛亚兔备_393
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有