2017-04-18 51 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:那麼就把它變成一個配置或命令行選項。 –