我需要能夠使用java監視內部網絡的速度。我想我可以使用一個服務器和一個客戶端的兩部分系統。我不需要響應時間,例如使用ping生成的內容,但實際的上傳和下載速度爲mbps。使用Java測量內部網絡速度/帶寬
我的想法是讓服務器發送一個數據包或一系列數據包到客戶端,然後服務器會計算這兩個點之間的網絡速度。有沒有人有任何想法我可以如何實現這一點?
謝謝你提前。
我需要能夠使用java監視內部網絡的速度。我想我可以使用一個服務器和一個客戶端的兩部分系統。我不需要響應時間,例如使用ping生成的內容,但實際的上傳和下載速度爲mbps。使用Java測量內部網絡速度/帶寬
我的想法是讓服務器發送一個數據包或一系列數據包到客戶端,然後服務器會計算這兩個點之間的網絡速度。有沒有人有任何想法我可以如何實現這一點?
謝謝你提前。
嗯,一個有趣的問題。我希望你喜歡閱讀...... :-)
我很想知道如何使用監測工具。在 的工作,系統管理員在房間裏只有幾個大屏幕, 顯示一個包含網絡統計負載的網頁,並不斷更新 。
我的描述的其餘部分假定網絡監視工具將如上所述使用 。如果你只是想在你的網絡上的兩個隨機主機之間做一個特別的 測試,我只需要使用rsync到 傳輸一個相當大的文件(大約1-2MB)。我確定有 其他文件傳輸工具也可以計算傳輸速度。
在實現這一點,(尤其是在大型網絡),您必須 的風險降到最低,測試充斥網絡,妨礙了人們 (或程序)真正使用它。您不希望因爲您正在進行測試而導致大量減速(或更糟糕的是,停電)。您的系統管理員不會感謝你...
我最好的建築師以下列方式的工具:
鮑勃是做 以下參與個別「試驗」的服務器:
Alice是顯示測量結果 (通過網頁或其他方式)的組件。 Alice是一個長期存在的進程 (也許是一個web服務器),被配置爲定期連接到Bob服務器的列表 。對於每個配置的Bob:
當進行特定的測試,愛麗絲應報告任何故障。例如。 ,或「可以與Bob建立一個TCP連接不」 「鮑勃 提前終止轉讓」或任何其他...
分散鮑勃服務器戰略位置在(可能很大) 網絡,並配置愛麗絲去他們。對於Bob的每個實例,您應配置
你想'錯開'給定的愛麗絲將嘗試的測試。您不希望Alice一次觸發所有Bob服務器的測試,因此 淹沒您的網絡,可能會導致結果偏斜等等。 允許測試發生在未來的隨機時間。對於 示例,如果測試間隔爲每10分鐘一次,則配置1分鐘的「迴旋餘地」 ,這意味着下一次測試可能發生在9到11分鐘之間的任何時間。
如果一次要運行多個Alice,則實例總數應該很小。您擁有的Alices越多,您就越會干擾網絡。同樣,您不希望對中斷負責 。
愛麗絲應該在單個測試中發送的數據量應該是 小。 500KB?您可能希望給定的測試運行時間不超過10秒。如果測試時間過長,可能會讓Bob超時。
我故意省略了運輸使用(TCP,UDP,等等) ,因爲你會得到不同的傳輸問題,我不知道你 要如何處理這些問題。例如,你不得不 考慮如何處理與UDP丟棄的數據報。 你計算的結果是什麼?您不會遇到TCP問題,因爲它會自動重新傳輸丟棄的數據包。對於TCP,如果兩個端點 彼此遠離,則您的吞吐量將被人爲地降低。這裏有一些 info就可以了。
如果您有耐心閱讀這一點,我希望它有幫助!
與編寫服務器不同,您可能只想使用tomcat或apache作爲服務器,然後您只需要客戶端上傳一個特定大小的文件,然後測量時間,然後轉向並下載文件,來衡量下載速度。
你可以編寫自己的服務器來做到這一點,但基本上你會做很多次之前做過的事情,那麼你需要確保你的服務器不會歪曲數字。
我最初想到這個,但我需要它在Java中,因爲它需要能夠插入我的網絡監控程序,它是用java編寫的 – 2010-07-31 17:53:24
您的網絡監控程序是客戶端,它將數據發送到Web服務器,然後檢索它。服務器可以使用任何語言,因爲您只需要一臺服務器即可輕鬆上載並下載文件。 – 2010-07-31 18:01:13
是的,我明白,但我將如何計算速度。假設我從監控程序向客戶端發送一個1024字節的數據包。程序必須得到一個時間戳,然後計算速度,如果是這樣,我會怎麼做?我將如何獲得準確的時間戳? – 2010-07-31 18:05:03
如果你不想要實際的速度,那麼你究竟在測量什麼?你關心上傳和下載嗎? – 2010-07-31 17:34:49
在網絡上的兩點完全上傳和下載速度 – 2010-07-31 17:43:37