gpt4 book ai didi

c++ - 缓冲区溢出会发生什么?

转载 作者:可可西里 更新时间:2023-11-01 02:35:24 24 4
gpt4 key购买 nike

我在某处读到每个 TCP 连接都有自己的 125kB 输出和输入缓冲区。如果此缓冲区已满,但我仍继续在 Linux 上发送数据,会发生什么情况?

根据 http://www.kernel.org/doc/man-pages/online/pages/man2/send.2.html数据包只是静静地丢弃,没有通知我。我能做些什么来阻止这种情况发生?有什么方法可以查明我的部分数据是否至少已正确发送,以便我可以在稍后的某个时间点继续?

最佳答案

简短的回答是这样的。 TCP 套接字上的“发送”调用只会阻塞,直到 TCP 滑动窗口(或内部队列缓冲区)由于远程端点接收和使用数据而打开。这与尝试以比磁盘保存速度更快的速度将字节写入文件没有太大区别。

如果您的套接字配置为非阻塞模式,发送将返回 EWOULDBLOCK 或 EAGAIN,直到可以发送数据。标准poll , select , 和 epoll调用将按预期工作,因此您知道何时再次“发送”。

关于c++ - 缓冲区溢出会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12269430/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com