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

标签 unit-testing language-agnostic unix networking tcp

当通过 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/

相关文章:

unit-testing - 黑盒单元测试

javascript - QUnit测试ajax成功函数

language-agnostic - CALLBACK 模式/习惯用法有哪些好的用例?

c - C套接字中需要多个连接

c++ - 将 C++ 项目导入到 Eclipse - 重叠工作区

android - 通过maven安装apk

php - 数组作为 Laravel 5.1 中的输入名称测试

algorithm - 生成唯一的排序排列

language-agnostic - 一些捷径组合的历史渊源

c - 实现 HTTP 1.0 服务器时出现的问题