UDP收到数据包但打印出有趣的结果

时间:2013-05-19 16:11:50

标签: java network-programming udp

我正在做一个简单的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本来是一个更好的选择,但我需要帮助解决为什么在这种情况下会发生这种情况。我希望你们都能让我对这个问题有所了解。

1 个答案:

答案 0 :(得分:1)

首次使用缓冲区后,您忘记了缓冲区 - 因此,如果连续接收的数据少于之前的数据,您将重新读取一些旧数据。