当通过 RST 标志关闭 TCP 连接而不是通过正常的握手关闭连接时,我有一些代码似乎无法很好地处理它。 “连接被对等方重置”的情况。我想编写一个始终通过 RST 关闭的 TCP 服务器,以便我可以重现该错误并为此编写一些单元测试。所以……
如何发送 RST 而不是正常关闭以进行测试?
最佳答案
您可以通过修改您的 SO_LINGER 设置来获得 RST。您希望将 l_onoff 设置为非零值并将 l_linger 设置为零。完成后,关闭套接字将导致重置。
struct linger lng;
lng.l_onoff = 1;
lng.l_linger = 0;
setsockopt(sock, SOL_SOCKET, SO_LINGER, &lng, sizeof(lng));
close(sock);
关于unit-testing - 如何发送 RST 而不是正常关闭以进行测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3248905/