我們的應用程序可用作支持Wi-Fi的設備的控制器。有時,當本地網絡流量可怕時,設備很難接收到控制器應用發送的命令。如果發生這種情況,我們需要通知用戶網絡流量很糟糕,並告訴用戶切換到另一臺路由器。Android - 如何使用一部電話測量本地網絡內的帶寬質量
我們確實對我們要控制的設備有心跳。但是,即使沒有達到那個階段,問題也可能發生。我的意思是,首先我們的應用程序需要通過發送UDP數據包到多播地址來搜索設備。然後,當我們收到來自這些設備的響應後,我們將在它們之間建立一個連接。那是我們可以得到心跳的時候。我談論的問題甚至是在剛剛搜索設備的階段,如果網絡流量很糟糕,我們的設備將無法接收到我們發送的UDP數據包。
到目前爲止,這些都是我們的嘗試:
- 啓動一個HTTP服務器和客戶端
我們啓動了一個輕量級的HTTP服務器,放置在文件中有。然後我們創建一個客戶端並下載該文件,並監控速度。但是這似乎不起作用,因爲有迴環。設備發現雙方(http客戶端和服務器)屬於同一個區域(可能這個術語是錯誤的),所以下載甚至不能通過路由器。
- 整合的iperf到我們的應用程序:
- 使用開源庫lib進行連接速度檢查,由Facebook提供。
- 嘗試搜索如何從同一設備下載文件時禁用回送。
如果我們的第一次嘗試是接近的,那麼如何才能禁用此回送的東西,使我們能夠正確地監視下載速度?
如果我們的第一次嘗試不夠好,那麼有沒有其他方法可以在本地測試帶寬?
這種解決方案的缺點是,該設備需要被生根。但是我們仍然嘗試了iPerf的解決方案。我們在同一臺設備上同時使用客戶端和服務器進行了測試。但速度仍然沒有改變。如果我們測試兩個設備,一個作爲服務器,另一個作爲客戶端,那麼我們會得到一個很好的速度測試。但是,我們不能作爲我們的客戶爲我們的產品使用兩部手機,並且我們也不能要求他們根植手機。
我們在github中發現了一個開源的lib,用於檢查連接速度的質量。但是,這需要互聯網連接,以檢查速度。但是我們的產品不需要用戶連接互聯網。用戶只需要一個路由器和一個應用程序。所以,不幸的是,我們不能使用這個解決方案。
基於我們的第一次嘗試,這是我們自己構建的唯一解決方案。我們試圖檢查文檔是否有從相同設備下載文件時禁用環回的功能。不幸的是,我們沒有得到任何好的結果。
那麼,我們的問題是:
注意:不應該有任何互聯網連接,並且不應該使用多個電話。
在此先感謝!
如果您的wifi設備與您的應用程序進行通信 - 如果您失去連接性,它們就不會有'心跳',您將提示用戶。有想法(1)是在同一臺機器上的http服務器和客戶端?如果沒有 - 您可以使用像wireshark這樣的代理來檢查是否有任何通信流量發生。 –
@MorrisonChang是的,我們的設備確實有心跳。但只有當應用程序已經找到設備,然後通過套接字連接與它們連接時纔會發生這種情況。我會更新我的問題。謝謝! –
@MorrisonChang是的,服務器和客戶端都在同一臺機器上 –