我有一些代码,当TCP连接通过RST标志而不是通过正常的握手来关闭连接时,似乎不能很好地处理它。“对等重设连接”的情况。我想写一个TCP服务器,它总是通过RST关闭,这样我就可以重现这个错误并为此编写一些单元测试。所以。。。
如何发送RST而不是正常关闭,以进行测试?
您可以通过修改SO\u LINGER设置获得RST。你想把l\u onoff设置为非零,l\u linger设置为零。一旦你这样做,关闭插座将导致复位。
struct linger lng; lng.l_onoff = 1; lng.l_linger = 0; setsockopt(sock, SOL_SOCKET, SO_LINGER, &lng, sizeof(lng)); close(sock);