好吧,所以我正在爲我的網絡課程進行編程,並且必須使用UDP實現一個使用Java的Java項目。我們正在實現一個HTTP服務器和客戶端以及一個'gremlin'函數,該函數以指定的概率破壞數據包。 HTTP服務器必須在應用層將大文件分成多個段,並通過UDP發送到客戶端。客戶端必須在應用層重組收到的段。但是我想知道的是,如果UDP在定義上不可靠,爲什麼我不得不在這裏模擬不可靠性?丟失UDP數據包的機會是多少?
我的第一個想法是,也許這只是因爲我的老師認爲在我們的情況下,客戶端和服務器都將在同一臺機器上運行,並且文件將從一個進程轉移到另一個100%通過UDP,因爲它位於同一臺計算機上的兩個進程之間。
這讓我不禁要問,如果服務器和客戶端是同一臺機器上的兩個進程,並且不需要出去,UDP是否會丟失數據包,是否會損壞數據包或將數據包亂序發送實際的網絡。
我也想知道實際上丟失數據包的機會是什麼,如果數據包損壞,或者讓它們在現實中亂序發生,通常會通過互聯網在兩個地理上遙遠的主機之間。
非常感謝任何能夠幫助我解決這些問題的人。
猜測你從來沒有遇到過糟糕的互聯網連接; p UDP主要用於場景中接收者不可能響應的場景。通過衛星,無線電波傳輸數據的示例 – leppie 2013-02-25 04:45:14
而不是「接收機無法響應的地方」我會說它用於丟失數據包並不重要的場景,比如音頻/視頻流媒體,視頻會議等 – Trap 2016-07-04 13:24:19
從這裏的經驗講,我有一個項目,其中兩個程序通過UDP進行通信,並不時發生丟包,我無法想象爲什麼,他們運行在同一臺計算機上並通過迴環接口。所以是的,你必須實現你的gremlin函數是一件好事,因爲儘管可靠性很高(我沒有任何統計信息,但是我在迴環上高於99.9%甚至更高),數據包丟失仍然會發生。 – soger 2016-12-31 14:52:30