DatagramPacket为字符串

use*_*216 5 java bytearray datagram

试图将收到的DatagramPacket转换为字符串,但我遇到了一个小问题.不确定什么是最好的方法.

我将收到的数据大多是未知长度,因此我的接收端设置了一些缓冲区[1024].问题是,假设我发送字符串"abc"并在接收方执行以下操作...

buffer = new byte[1024]; 
packet = new DatagramPacket(buffer, buffer.length);
socket.receive(packet);
buffer = packet.getData();
System.out.println("Received: "+new String(buffer));
Run Code Online (Sandbox Code Playgroud)

我得到以下输出:abc [] [] [] []] [] [] [] .....一直到缓冲区长度.我猜测最后的所有垃圾/空都应该被忽略,所以我一定做错了."我知道buffer.length是问题,因为如果我将它改为3(对于这个例子),我的出来就好了.

谢谢.

jta*_*orn 8

new String(buffer, 0, packet.getLength())
Run Code Online (Sandbox Code Playgroud)


小智 5

使用此代码代替: String msg = new String(packet.getData(), packet.getOffset(), packet.getLength());