我正在做一个简单的UDP file.txt从发送方转移到接收方。它是以提示方式到达的。但是,当我打印内容时,有些内容正确显示,但有些内容被接收器端收到的前一个字段混淆了。
我的意思是: 文本文件的内容为ALL IN ONE SENTENCE:
日复一日,一周又一周地回到日内瓦去世;
例如在接收方:
天 后 当天,R weekr 后 weekr 通过 awayed onayed myayed 返回 toturn 日内瓦
代码是:
byte[] byteArray = new byte[9999];
DatagramSocket listenSocket = new DatagramSocket(5001, InetAddress.getByName("127.0.0.1"));
while(true) {
DatagramPacket segment = new DatagramPacket(byteArray, byteArray.length);
listenSocket.receive(segment);
ByteArrayInputStream byteIn = new ByteArrayInputStream(segment.getData());
int data = byteIn.read();
if(data == -1) {
//break;
} else {
System.out.println("Got: " + new String(segment.getData()));
}
是的,TCP本来是一个更好的选择,但我需要帮助解决为什么在这种情况下会发生这种情况。我希望你们都能让我对这个问题有所了解。
答案 0 :(得分:1)
首次使用缓冲区后,您忘记了缓冲区 - 因此,如果连续接收的数据少于之前的数据,您将重新读取一些旧数据。