C 如何模拟阻塞事件来测试非阻塞套接字
我经常发现自己想要测试各种非阻塞套接字代码,但我不确定如何模拟或以其他方式故意导致事件测试非阻塞读/写和各种缓冲区-换句话说,在给定套接字上导致“阻塞事件”C 如何模拟阻塞事件来测试非阻塞套接字,c,sockets,tcp,nonblocking,C,Sockets,Tcp,Nonblocking,我经常发现自己想要测试各种非阻塞套接字代码,但我不确定如何模拟或以其他方式故意导致事件测试非阻塞读/写和各种缓冲区-换句话说,在给定套接字上导致“阻塞事件” 如何做到这一点?我认为这需要对TCP会话进行低级别控制,以便在接收套接字上故意导致EWOULDBLOCK错误如果您有一组确切的场景要检查您的程序,您可以使用ScaPy发送具有所需延迟的任意数据包。可以以*.pcap格式从捕获的会话开始,这样您就不必手工制作所有数据包,只需修改/添加/延迟一些数据包,或者生成测试脚本,等等。请参阅。还可以以所
如何做到这一点?我认为这需要对TCP会话进行低级别控制,以便在接收套接字上故意导致EWOULDBLOCK错误如果您有一组确切的场景要检查您的程序,您可以使用ScaPy发送具有所需延迟的任意数据包。可以以*.pcap格式从捕获的会话开始,这样您就不必手工制作所有数据包,只需修改/添加/延迟一些数据包,或者生成测试脚本,等等。请参阅。还可以以所需的数据包/秒速度重播*.pcap文件
如果你想在恶劣的网络环境中测试你的程序,例如。G模拟数据包丢失和重传,有现成的工具,例如。G对于Linux,请查看并从那里链接到Windows工具。请查看列出各种测试框架的线程。您的建议似乎只是发送命令来模拟正常的服务器或客户端。在我的例子中,测试客户端必须暂停TCP会话,以模拟传输中的过度延迟。换句话说,它必须延迟发送数据包或帧的结尾,或者延迟ACK而不引起重传,从而防止远程端点接收它认为是整个传输的内容并返回而不出错。