客户端发送报文代码:
.......
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);
我用上面代码将其转化为字符串并打印出来发现是乱码,而不是我发送的字符,这是怎么回事??如何解决?
.......
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);
我用上面代码将其转化为字符串并打印出来发现是乱码,而不是我发送的字符,这是怎么回事??如何解决?
其实你可以用一个BufferedWriter先把数据写出来.再赋值给String.最后在打印出来,应该就OK了
String z= new String(packet.getData(),packet.getOffset(),packet.getLength());就行了。