监视Windows Server,Java中的UDP数据包丢失

时间:2009-06-05 07:00:19

标签: java windows networking udp

我的Java应用程序通过UDP接收数据。它使用数据进行在线数据挖掘任务。这意味着接收每个数据包并不重要,这使得UDP的选择首先是合理的。此外,数据通过LAN传输,因此物理网络应该相当可靠。无论如何,我无法控制协议的选择或包含的数据。

但是,我担心应用程序本身的过载和长处理时间可能导致数据包丢失。我想知道这些事情经常发生的频率和丢失的数据量。

理想情况下,我正在寻找一种在生产系统中持续监控数据包丢失的方法。但也欢迎部分解决方案。

我意识到无法始终了解UDP数据包丢失(无法控制数据包内容)。我正在考虑操作系统收到的数据包,但从未到达应用程序;或者可能是应用程序内部的一些聪明的解决方案,比如快速读取线程在客户端繁忙时丢弃数据。

我们正在Windows Server 2003或2008下部署。

2 个答案:

答案 0 :(得分:2)

问题是,如果您依赖UDP格式,则无法判断您是否丢失了任何数据包。

如果您需要了解此类信息,则需要将其构建为您在UDP上面的格式(如TCP序列号)。如果您这样做并且格式很简单,那么您可以轻松地在Microsoft的NetMon或WireShark中创建过滤器来记录和跟踪该信息。

另请注意,TCP序列号实现还有助于检测使用UDP时可能发生的无序数据包。

答案 1 :(得分:0)

如果您担心数据包丢失,请使用TCP。

这就是它被发明的原因之一。