2017-04-18 14 views
1

作为一项家庭作业,我编写了UDP服务器 - 客户机应用程序,该应用程序尝试使用校验和和通过确认正确接收的数据包来纠正UDP通信中的错误。如何模拟Qt UDP程序的丢包?

问题是,在本地主机上,所有数据包都没有问题地收到。我尝试了一些包篡改程序,但它们都需要通过网络接口进行通信。

如何模拟localhost环回地址上的UDP数据包丢失?

回答

4

UDP很容易处理 - 只需在发送者或接收者中写入一些代码,以降低一定比例的消息,并且偶尔也会重新排列一些消息。

如果你不能修改实际的发送者或接收者,很容易编写第三个程序,它只是在中间位置,用一些丢弃和重新排序来转发数据包。

如果您使用的是Linux,您可能会设置iptables为您丢弃数据包:http://code.nomad-labs.com/2010/03/11/simulating-dropped-packets-aka-crappy-internets-with-iptables/ - 这看起来好像甚至可能在环回端口上也能正常工作。

+0

我可以修改发件人和收件人,但我希望能够在不重新编译程序的情况下轻松演示功能。我主要在Windows上工作,但如果需要可以在Linux上测试。 –

+1

@TomášZato:那么就把它变成一个配置或命令行选项。 –