客户端发送报文代码:
.......
System.out.println("请选择要通信的模块:");
BufferedReader mid = new BufferedReader(new InputStreamReader(System.in));
String id=mid.readLine();

System.out.println("请输入发送信息,每次一行回车表示,EXIT结束:");
BufferedReader usrinput = new BufferedReader(new InputStreamReader(System.in));
String theLine = usrinput.readLine();theLine=id+"%"+theLine;
byte[] data = theLine.getBytes();DatagramPacket output = new DatagramPacket(data, data.length);
socket.send(output);
.......服务端接收的报文是packet
String z=(packet.getData()).toString();
System.out.print(z);
我用上面代码将其转化为字符串并打印出来发现是乱码,而不是我发送的字符,这是怎么回事??如何解决?

解决方案 »

  1.   

    肯定是乱码啦,因为你packet返回的是数据缓冲区,里面还是字节呢,你就把它转化为字符串.肯定不行啊!
      其实你可以用一个BufferedWriter先把数据写出来.再赋值给String.最后在打印出来,应该就OK了
      

  2.   

    答:将 String z=(packet.getData()).toString(); 改为:
    String z= new String(packet.getData(),packet.getOffset(),packet.getLength());就行了。