我正在使用Java和UDP發送者和接收者的類的項目。問題的前提是讀入文本文件,將內容存儲在數據包中,發送數據包,接收數據包,並在屏幕上讀出文件,並在接收計算機上創建一個相同文本文件的新文本文檔。Java UDP數據包發送和接收問題
我有所有的工作。當我使用本地主機進行測試時,它似乎在100%的時間內工作。當我從我的筆記本電腦發送到我的電腦時,它似乎在100%的時間內工作。但是,當我從我的PC發送到我的筆記本電腦時,它不起作用。
我有幾個System.out調試語句來驗證我發送的一些信息。我知道文本文件應該包含7個數據包。但是,每當我從我的PC發送到我的筆記本電腦時,它說我正在發送46個數據包。
我最初的想法是,數據包可能是無序發送的。我發送的第一個數據包指示接收器應該接收多少個數據包。我想也許出於某種原因,「46」可能表示大寫字母「F」,所以我刪除了所有大寫字母「F」,它仍然表示我發送了46個數據包。
我以爲也許我一次發送太多的信息,所以我使用Thread.sleep()來給我的接收器時間跟上 - 這也沒有工作。
最後,我通讀了Oracle文檔和一些在線文章,發現UDP是不可靠的。所以,我假設它可能是這樣的。但是,我想驗證這可能是問題。
或者如果任何人有更好的主意,可能會導致問題,這將是真棒!
感謝您的幫助:)
非常好的答案,謝謝!我決定對它進行測試。我不確定這是否只是巧合,但似乎是泛泛而談。我用我的筆記本電腦在我的電腦上播放了大量Youtube視頻,UDP Receiver表示它收到了106個數據包,最終無法正常接收信息。我把它們全部關掉,然後再次發送它,並且工作。我從我的電腦到我的筆記本電腦做了同樣的實驗,結果也一樣。再次,不知道這是否是巧合,但從你說的和我的實驗看來,這似乎是我的問題的答案。謝謝:) – BearForceOne 2014-09-19 18:52:24
@BearForceOne - 指出數據包丟失是問題所在。如果丟失了一個數據包,則會丟失整個UDP消息,因此文件傳輸將失敗。 – 2014-09-19 22:44:03