UDP数据报中发送的消息未清理?

我的代码如下。 一切都按照我想要的方式工作,但是当收到我的消息时,他们有很多盒子,有点像这样的“消息:你好▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀ ▀▀▀▀▀▀▀“我怎样才能这样做才能收到和打印的只是”消息:你好“? 我非常感谢任何帮助。

import java.io.*; import java.net.*; public class UDPChat { public static void main(String args[]) throws Exception { new UDPChat(); } public UDPChat() { try { runChat(); } catch (Exception e) { }} public void runChat() throws InterruptedException { Sender sender = new Sender(); Receiver receiver = new Receiver(); sender.start(); receiver.start(); sender.join(); receiver.join(); } class Receiver extends Thread { public void run() { try { DatagramSocket serverSocket = new DatagramSocket(9876); byte[] receiveData = new byte[1024]; while (true) { DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length); serverSocket.receive(receivePacket); String sentence = new String(receivePacket.getData()); System.out.println("Message: " + sentence); } } catch (IOException e) { } } } class Sender extends Thread { public void run() { try { DatagramSocket clientSocket = new DatagramSocket(); InetAddress IPAddress = InetAddress.getByName("localhost"); byte[] sendData = new byte[1024]; while (true) { BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in)); String message = inFromUser.readLine(); sendData = message.getBytes(); DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, 9876); clientSocket.send(sendPacket); } } catch (IOException e) { } } } } 

 String sentence = new String(receivePacket.getData()); 

通常的问题。 忽略数据报长度。 修复如下:

 String sentence = new String(receivePacket.getData(), receivePacket.getOffset(), receivePacket.getLength());