2012-02-10 37 views
0

Java程序完全按照預期的方式在局域網上同時使用TCP和UDP。然而,在UDP方面,儘管客戶端和服務器上的套接字都處於啓動狀態並且數據包正在發送和接收,但實現了部分單工數據流。哪裏將是最富有成效的領域來確定這個原因呢?Java - UDP WAN會話不能執行

+0

包丟失??? – nfechner 2012-02-10 20:47:40

回答

0

你需要處理髮送和接收在單獨的線程或使用某種異步IO。否則您的應用程序將通過WAN連接在鎖定中停止運行。你不會在局域網上看到它,因爲傳輸速度非常快。

0

請記住,使用UDP時,每條消息都只是扔在線上。不能保證它會使它到達另一邊,因此您必須開發算法來確定數據包何時丟失以及何時重複數據包。不能保證任何大於總共576字節(包括所有IP標頭)的數據報將被允許通過網絡,因此您必須劃分消息或採取措施檢測大數據報何時失敗。無法知道網絡一次可以處理多少個數據報,因此您必須規定您發送消息的速度,以及知道何時減慢速度。

廣域網只是一個更加困難的環境:存在更多競爭性流量,更慢的鏈路以及更少的大數據報容忍度。因此,通常在局域網上可以避免的事情會導致廣域網出現更多的錯誤。

所以考慮UDP是否真的是正確的協議使用。