c - 没有keepalive的物理断开的tcp套接字的生命周期

标签 c linux sockets tcp

在没有 keep-alive 选项的 TCP 连接上,如果我物理断开线路 - 所以没有 FIN/ACK 可能性,这个套接字是否会愉快地接受我所有的应用程序数据,将其放入发送缓冲区并尝试永远发送它?

如果没有,它何时以及如何终止 = 哪些错误将返回到我发送小块数据的应用程序?我们谈论 Linux 和 c。

谢谢

最佳答案

如果套接字正在发送,(1) 最终发送缓冲区将填满,因此下一个发送调用将阻塞,并且 (2) 最终 TCP 将由于未收到 ACKS 并重置连接而导致发送尝试超时,并将错误传递给下一个发送调用。

关于c - 没有keepalive的物理断开的tcp套接字的生命周期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18171448/

相关文章:

c - 如何在 Linux 上用 C 递归列出目录?

c - 关于标准信号的传递

C:为什么我的库中的全局变量不会更新? (使用 ALSA 库)

c - 是否可以循环接收/读取以从套接字读取所有数据

c - C中的socket send()卡住

c++ - 由于 sin6_port 值,sendto 在 Linux 中的 UDP 原始套接字 ipv6 上返回无效参数?

c - Profile C代码执行百分比(逐行注释)

Python - 哎呀 - 当我有 2.7 时安装了 Python2.6 - 现在默认为 2.6 - 想要 2.7

linux - 如何在正在运行的系统上找到 Apache Server 进程、空闲 worker 值

c - 在 VirtualBox 内的 Debian 上调用 socket() 时出现错误 97