я работаю с UDP Multicast в 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) {
}
}
}
Я могу получить данные от другого узла, но только в виде двоичных данных. Может ли кто-нибудь рассказать мне, как преобразовать переменную «полученный» в нечто значимое, такое как «Строки/Символ», чтобы оно было читаемым для людей. И не могли бы вы написать код точно, я действительно новичок в программировании. действительно ценят любую помощь.
Мне жаль, что я не продвинулся в программировании, чтобы точно указать, что вы мне сказали. Есть ли какой-то код для этого, потому что для этого понадобится возраст. –
Проще говоря, переменная байта, которую вы определили, имеет размер 4096, это очень большой, теперь, если вы собираетесь вставить в нее некоторые данные, оно должно быть меньше 4096. Дает веселье, если вы указали, что 1000 размер данных в буфере 4096, есть 3096 свободного места. И когда вы конвертируете его в строку, эти свободные пробелы преобразуются в пустые символы в формате String. Например, если буфер содержит данные для «H, e, l, l, o», в строковом формате он будет отображаться как «Hello **********», где * - свободное пространство left, то есть пустые символы. Я дам вам код, который вы можете использовать. – NaxiProg