Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 如何模拟阻塞事件来测试非阻塞套接字_C_Sockets_Tcp_Nonblocking - Fatal编程技术网

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而不引起重传,从而防止远程端点接收它认为是整个传输的内容并返回而不出错。