2016-05-06 78 views
0

我的代码如下。一切都按我想要的方式工作,但是当收到我的消息时,他们有许多方框就像这样:“Message:hello▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀ ▀▀▀▀▀▀▀“我怎样才能做到这一点,所以接收和打印的内容只是”消息:你好“?我非常感谢任何帮助。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) { 
      } 
     } 
    } 

} 

回答

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

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

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

很好,那正是我一直在寻找的!谢谢您的帮助! – Auborey

+1

@Auborey - 如果它适合你,请接受答案。了解如何接受答案---> http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work –