-1
检索字符串我与UDP组播工作在Java.My代码如下:从二进制数据
import java.io.*;
import java.net.DatagramPacket;
import java.net.InetAddress;
import java.net.MulticastSocket;
import java.lang.*;
import java.nio.charset.Charset;
public class MulticastTest {
static String MCAST_ADDR = "224.0.1.129";
static int DEST_PORT = 320;
static int BUFFER_LENGTH = 4096;
public static void main(String args[]) {
try {
byte[] b = new byte[BUFFER_LENGTH];
DatagramPacket dgram = new DatagramPacket(b, b.length);
MulticastSocket socket = new MulticastSocket(DEST_PORT);
socket.joinGroup(InetAddress.getByName(MCAST_ADDR));
socket.receive(dgram); // blocks until a datagram is received
System.err.println("Received " + dgram.getLength() + " bytes from " + dgram.getAddress());
dgram.setLength(b.length); // must reset length field!
String received = new String(dgram.getData());
System.out.println("Bytes received and printed at Console: " + received);
} catch (Exception e) {
}
}
}
我能够从另一个节点只能作为二进制数据接收数据。 是否有人可以告诉我如何将变量“received”转换为有意义的字符串/字符,以便它可以被人读取。您能否准确地编写代码,我对编程真的很陌生。非常感谢任何帮助。
我希望我在编程方面有先进性,能够完全符合您对我的要求。 有没有一些代码可以做到这一点,因为这需要我很长时间才能做到。 –
简单来说,你定义的字节变量是4096的大小,非常大,现在如果你打算放入一些数据的话,它应该小于4096来适应。 Nows the fun part,如果你在4096缓冲区中说1000个数据大小,则有3096个可用空间。 当您将其转换为字符串时,这些可用空间将转换为字符串格式的空白字符。 例如,如果缓冲区包含字符串格式的“H,e,l,l,o”的数据,它将显示为“Hello **********”,其中*是可用空间左边,那是空白字符。 我会在下面提供一个代码供您使用。 – NaxiProg