如何使用自定义服务器手动发送 RST?

aha*_*101 3 tcp tcpserver

我正在尝试调试一个场景,为此我希望 http 服务器通过 RST 关闭连接。现在它正在用 fin/ack 优雅地结束。

有什么方法可以手动发送 RST 数据包来关闭连接作为当前流的一部分吗?可能是一个简单的定制服务器?

在此先感谢您的帮助。

use*_*421 6

假设是您自己的代码,请调用setsockopt()withoption=SO_LINGER并将linger结构设置为l_onoff=1and l_linger=0,然后关闭套接字。任何仍在缓冲的出站数据都将丢失,其中包括已发送但未确认的数据。

仅将此用于测试。这是不安全和不友善的。

如果这不是您在服务器中的代码,请编写一个客户端,对大型资源执行 GET 操作并关闭连接,而不读取任何响应。

资料来源:WR Stevens等人,Unix 网络编程,第 1 卷,第 3 版,第 202 页。