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

Unit testing 如何发送RST而不是正常关闭以进行测试?,unit-testing,language-agnostic,unix,networking,tcp,Unit Testing,Language Agnostic,Unix,Networking,Tcp,我有一些代码,当TCP连接通过RST标志关闭时,而不是通过正常的握手关闭连接时,它似乎处理得不好。“由对等方重置连接”的情况。我想写一个TCP服务器,它总是通过RST关闭,这样我就可以重现错误并为此编写一些单元测试。所以 如何发送RST而不是正常关闭以进行测试?您可以通过修改SO\u LINGER设置来获得RST。您希望l_onoff设置为非零,l_linger设置为零。一旦您这样做,关闭插座将导致复位 struct linger lng; lng.l_onoff = 1; lng.l_ling

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


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

您可以通过修改SO\u 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);

一些解释:谢谢,FWIW Java等价物是
socket.setSoLinger(true,0)