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