代码之家  ›  专栏  ›  技术社区  ›  Harold L

如何发送RST而不是正常关闭,以进行测试?

  •  4
  • Harold L  · 技术社区  · 16 年前

    我有一些代码,当TCP连接通过RST标志而不是通过正常的握手来关闭连接时,似乎不能很好地处理它。“对等重设连接”的情况。我想写一个TCP服务器,它总是通过RST关闭,这样我就可以重现这个错误并为此编写一些单元测试。所以。。。

    如何发送RST而不是正常关闭,以进行测试?

    1 回复  |  直到 16 年前
        1
  •  5
  •   R Samuel Klatchko    16 年前

    您可以通过修改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);
    
    推荐文章