0

我正在做一个从发送者到接收者的简单 UDP file.txt 传输。它是按提示到达的。但是,当我打印内容时,有些内容正确显示,但有些内容与接收器端收到的先前单词混在一起。

我的意思是:文本文件的内容全部为一句话:

日复一日,一周又一周,在我返回日内瓦时逝去;

例如在接收方:

日复一日,一周又一周逝去

代码是:

    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 本来是一个更好的选择,但我需要帮助了解为什么会在这种情况下发生这种情况。希望大家能帮我解答一下这个问题。

4

1 回答 1

1

您在第一次使用缓冲区后忘记清空缓冲区 - 因此,如果连续接收获得的数据少于前一次,您将重新读取一些旧数据。

于 2013-05-19T16:15:42.357 回答