[英]Measuring packet loss with Java
我正在开发一个可分析互联网连接质量的应用程序,其中一部分用于测量数据包丢失。
我当时正在考虑将程序包发送到IP地址,但是如何发送消息并检查它们是否返回? 我想我需要发送一个提示回复的程序包,但是我找不到使用搜索或Google的示例。
还是应该使用现有流量(如何?)?
除此之外,我该如何测量往返时间?
由于TCP是可靠的传输方式,因此看不到丢失的数据包。 在Linux中,您可以使用ifconfig查看发生的重传次数。 我不确定哪些命令行工具会在Android上向您显示此信息,但是您需要使用系统工具才能为您提供此信息。
顺便说一句,您可以使用UDP数据包来估计数据包丢失.UDP和TCP的数据包丢失率不同,但可以给您一个思路。
您将需要使用UDP或ICMP(ping),因为这样将无法轻松看到TCP数据包丢失。
如果使用ICMP,则需要确保另一台计算机能够响应ICMP。 防火墙通常会阻止ICMP。
如果使用UDP,则另一台计算机将需要服务器软件,该软件可以识别您的数据包并尽快答复。 为此,最简单的服务器类型称为Echo Server。
这是一个Java UDP Echo服务器
往返时间可以通过计算传输数据包的时间与收到传输响应的时间之间的差来衡量。 您的协议应该微不足道,以免浪费往返时间和处理时间。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.