Save a tutti, sono un pò neofita in java, mi sto acculturando e facendo ricerche varie, ma non riesco a venirne a capo:
Ho un sistema di automazione che mi invia ogni 10 secondi delle stringhe UDP, ove sono contenuti dei valori dai quali riesco a sapere se una luce è accesa o spenta.
Sto usando Eclipse, ho creato un socket UDP di ascolto, riesco a ricevere la stringa, ove l'ho tradotta anche in HEX (esadecimale), ma ora non riesco a capire come estapolare i valori
codice://Importo i package necessari import java.net.*; import java.io.*; public class ServerUDP { public void start() throws IOException { //Attivo la Socket sul Server in ascolto sulla porta 7777 DatagramSocket serverSocket = new DatagramSocket(7777); byte[] buffer = new byte[2000]; DatagramPacket packet = new DatagramPacket(buffer, buffer.length); //Informazioni sul Server in ascolto InetAddress indirizzo = serverSocket.getLocalAddress(); String server = indirizzo.getHostAddress(); int port = serverSocket.getLocalPort(); System.out.println("In ascolto Server UDP: "+ server + " porta: " + port); //Ciclo infinito per ascolto dei Client while (true) { //Messaggio ricevuto dal Client serverSocket.receive(packet); String ricevuto = new String( packet.getData(), 0, packet.getLength()); for (int x = 0; x < 28; x++) { System.out.print(Integer.toHexString(buffer[x] & 0xFF)+" "); } System.out.print("\n" + ricevuto); System.out.print("\n"); } } public static void main (String[] args) throws IOException { ServerUDP udpServer = new ServerUDP(); udpServer.start(); }
Ho come risultato:
In ascolto Server UDP: 0.0.0.0 porta: 7777
72 4d 64 64 72 76 0 2 52 0 10 0 0 f4 0 0 0 0 17 1 1 6 0 0 0 0 0 0
la stringa ricevuto mi da come risultato solo le lettere tranne i numeri, sarà qualche problema di formattazione?
io ho necessità di estrarre "f4" che poi devo convertire in decimale, e i valori degl'ultimi 8 byte, ossia 1,6,0,0,0,0,0,0; ognuno di questi avrei necessità di convertirli in codice binario.
Grazie per l'aiuto
Gerardo