-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