【发布时间】:2010-12-15 03:28:35
【问题描述】:
我在 linux 上工作。 我有一个 HTTP 客户端,它从 HTTP 服务器请求一些数据。 HTTP 客户端是用 C 编写的,HTTP 服务器是用 perl 编写的。 我想在客户端模拟TCP重传超时。
我假设优雅地关闭套接字不会导致客户端重新传输请求。
所以我尝试了以下场景:
收到 HTTP GET 请求后立即退出服务器。但是,我注意到一旦应用程序退出,套接字仍然会正常关闭。我看到即使应用程序没有在套接字上调用“关闭”,服务器也会向客户端发起 FIN.ACK 消息。我在用 C 程序编写的简单 TCP 服务器和客户端上也注意到了这种行为。
服务器不向客户端的 GET 请求发送任何响应。在这种情况下,我注意到仍然有服务器发送的 FIN、ACK。 似乎在这些情况下,操作系统(linux)负责关闭与对等方的套接字。 有没有办法抑制这种行为(使用 ioctl 或 setsockopt 选项)或任何其他方式来模拟 TCP 重新传输超时。
【问题讨论】:
标签: tcp