2013-07-18 58 views
1

我正在开发一款应用程序,用于分析您的Internet连接质量,其中一部分是测量数据包丢失。使用Java测量数据包丢失

我正在考虑将包发送到IP地址,但是如何发送消息并检查它们是否返回?我猜我需要发送一个包来提示回复,但是我找不到使用搜索或Google的例子。

或者我应该使用现有的流量(如何?)?

除此之外,我该如何测量往返时间?

回答

1

由于TCP是可靠的传输方式,因此您不会看到丢弃的数据包。在Linux中,您可以使用ifconfig查看您发生了多少次重传。我不确定哪些命令行工具会在Android上向您显示这一点,但您需要使用系统工具为您提供此信息。

BTW您可以使用UDP数据包来估计数据包丢失。UDP和TCP的数据包丢失率不尽相同,但它可以为您提供一个想法。

0

您需要使用UDP或ICMP(ping),因为您无法轻松看到TCP数据包丢失。

如果您使用ICMP,则需要确保相反的计算机响应ICMP。防火墙通常阻止ICMP。

如果您使用UDP,其他计算机将需要服务器软件,它可以识别您的数据包并尽快回复。最简单的服务器类型称为Echo服务器。

这里的一个Java UDP Echo Server

往返时间可以通过采取你发送分组到所接收的该传输的应答时的时间之间的差来测量。你的协议应该是微不足道的,以免污染处理时间的往返时间。