【发布时间】:2011-11-23 10:47:02
【问题描述】:
我有一个程序,它使用 UDP 将数据从一台电脑发送到另一台电脑(数据大小为 150 字节)。那 程序是用 delphi 7 编写的(TldUDPClient 和 TldUDPServer 组件使用 发送和接收数据)。我需要测试这个程序的 30% 丢包率。
我在 windows 上使用ipfw(从 sourceforge 下载):
ipfw -f flush
ipfw add pipe 1 ip from any to any out
ipfw pipe 1 config plr 0.3
当我使用 ping 时,我看到 30% 的数据丢失。
当我启动我的 delphi 程序时,经过一段时间的工作它返回一个
错误:socket error 10004。错误的描述是:函数调用中断。
调用WSACancelBlockingCall 中断了阻塞操作。
是我的网络组件和丢包仿真之间的能力问题吗?或者我会在真实情况下看到丢包的情况吗?我可以使用哪些其他防火墙或其他软件来模拟丢包?
【问题讨论】:
-
您在一个 UDP 数据包中使用 UDP 发送多少数据?如果它大于底层网络的数据包大小(保证UDP数据包完全到达或根本不到达,但底层可能有多个网络数据包(不知道官方名称))我可以假设这可能发生在现实生活也是。
标签: windows delphi delphi-7 winsock ipfw