【问题标题】:How can I simulate packet loss for my Qt UDP program?如何为我的 Qt UDP 程序模拟丢包?
【发布时间】:2017-04-18 12:34:46
【问题描述】:

作为家庭作业,我编写了 UDP 服务器-客户端应用程序,该应用程序尝试使用校验和并通过确认正确接收的数据包来纠正 UDP 通信中的错误。

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

如何在localhost环回地址上模拟UDP丢包?

【问题讨论】:

    标签: c++ testing networking udp


    【解决方案1】:

    UDP 很容易处理——只需在发送方或接收方中编写一些代码,它会丢弃一定比例的消息,并且可能偶尔还会重新排序一些消息。

    如果您不能修改实际的发送者或接收者,编写第三个程序就很容易了,它只是位于中间,转发带有一些丢包和重新排序的数据包。

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

    【讨论】:

    • 我可以修改发送方和接收方,但我希望能够在不重新编译程序的情况下轻松演示功能。我主要在 Windows 上工作,但如果需要,可以在 linux 上进行测试。
    • @TomášZato:那么就让它成为配置或命令行选项。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-15
    • 1970-01-01
    • 2011-12-04
    • 1970-01-01
    • 2017-04-04
    • 2013-08-26
    • 1970-01-01
    相关资源
    最近更新 更多