如何模拟阻塞事件来测试非阻塞套接字

时间:2015-06-06 12:10:50

标签: c sockets tcp nonblocking

我经常发现自己想要测试各种非阻塞套接字代码,但我不确定如何模拟(或以其他方式故意造成)事件来测试非阻塞读/写和各种缓冲区 - 换句话说,在给定套接字上导致“阻塞事件”。

如何做到这一点?我想这需要对TCP会话进行低级别控制,以便故意在接收套接字上引起EWOULDBLOCK错误

1 个答案:

答案 0 :(得分:0)

如果你有一套确切的场景,你希望检查你的程序,你可以使用ScaPy发送具有所需延迟的任意数据包。可以从*.pcap格式的捕获会话开始,这样您就不必手动编写所有数据包,只需修改/添加/延迟一些数据包,可能会生成测试脚本等。请参阅{ {3}}。 Sending packets from pcap with changed src/dst in scapy还可以以所需的速度(数据包/秒)重放*.pcap文件。

如果您想在恶劣的网络环境中测试您的程序(例如模拟数据包丢失和重传),可以使用现成的工具,例如: G。对于Linux,请查看TCPReplay(以及从那里链接到Windows工具)。