2013-12-17 230 views
1

我需要制作一个使用.NET,C,C#的Windows程序,这个程序会在通过网络上的计算机移动的数据中增加延迟。基本上,如果我有一个充满电脑的房间,我希望通过这个程序将计算机变成一个节点,以延迟通过它移动的信息,就好像该信息从一台计算机转移到500英里外的另一台计算机一样。这是为了测试实验室中的程序,就好像它们在互联网上使用一样。该程序必须处理udp,tcp,ipv4,ipv6和pim多播连接。如何模拟网络延迟/人为地增加网络延迟?

我一直在挖掘.NET System.Net API试图找出哪些API工具会有所帮助,但我不确定从哪里开始。我是否需要制作客户端程序和服务器程序,并将System.Net.Sockets用于ipv4和ipv6的tcp和udp连接和ip端点?

如果可能的话,我想制作一个程序,在一台计算机上运行,​​为通过它运行的所有内容添加延迟。这可能/可行吗?

我希望我有更多的礼物来获得更具体的答案,但我不知道从哪一个开始。

+0

500英里外...所以... 2ms的延迟? :) –

+0

当然,或数千英里,或无论如何很大的距离,将导致高达1000毫秒的延迟。 – user3109637

+0

1000毫秒 - 无处不在 –

回答

0

有很多产品已经做到了这一点,它们位于堆栈中,允许您调整线速度,延迟,数据包丢失,数据包重复等等。

The dummynet project

SoftPerfect Connection Emulator

+0

我正在通过dummynet项目来查看它是如何工作的。我需要制作自己的类似dummynet的程序,但只有延迟功能。感谢您的答复。 – user3109637

+0

你能向我解释你指的是什么堆栈?它是网络堆栈还是与Windows网络层有关系? 另外,如何使用C或C#访问堆栈(哪些库/类/方法可以帮助我这么做)? 任何和你介意分享的信息都非常感谢。 – user3109637

+0

ISO模型层3-5通常是您可以接入的模型。通常你可以通过设备驱动程序或SDK访问这些API,如果你真的想获得所有更好的细节。 –