2012-05-23 33 views
9

可能重複:
Iphone detect 3g or wifiiOS的檢測連接速度或類型

是否有一種方式來獲得當前網絡速度或者如果設備上EDGE/3G/GPRS? 我可以使用Reachability來區分WiFI和WMAN,但這對我的應用程序來說還不夠。

+1

不是重複! –

+0

@gunjotsingh對於最初的問題的答案實際上是在這裏:https://stackoverflow.com/a/34333204/751932雖然有關連接速度的問題被標記爲重複... – Speakus

回答

11

如果你真的需要知道,你將不得不測試它。

建立與低延遲的已知服務器的連接。在一個單獨的線程中,標記時間(時間A)併發送一個數據包(確保它是一個數據包)。等待那個線程。標記第一個數據包的時間(時間B)。讀完數據直到完成。標記最後一個數據包的時間(時間C)。確保服務器響應跨越至少三個數據包。

時間B - 時間A是一個非常粗略的延遲估計。 時間C - 時間B是一個非常粗略的帶寬估計。

因爲您希望儘可能準確,請使用您可用的最低級別的網絡訪問權限(我相信iPhone是套接字)。使用固定長度的隨機數據塊作爲請求和響應。請求的幾個字節應該足夠了,但響應需要很好地構建。確保服務器發送一個小的第一個數據包,然後發送一個足夠大的數據包以填充三個或更多的數據包。

此時您需要測試。測試,測試,測試和測試。測試不同的網絡類型,測試不同數量的網絡流量,使用交換網絡進行測試,並測試任何您能想到的東西。

+1

有趣的技術方法。所以不管是WIFI還是3G等......這應該給一些球場估計的可用帶寬。我正在尋找這樣的解決方案,所以我可以在邏輯上決定在網絡中放大或縮小圖像。較小的那些首選較低帶寬的情況 – jcpennypincher