2013-07-18 75 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

往返時間可以通過採取你發送分組到所接收的該傳輸的應答時的時間之間的差來測量。你的協議應該是微不足道的,以免污染處理時間的往返時間。