我正在使用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