UDP Antwort dekodieren

Fohnbit

Top Contributor
Hallo!

Ich erhalte per UDP ein Packet mit dem Inhalt einer Hex Zeichenfolge:
5A4C01C0A80045FFFFFF00C0A80001C0A8010401F61064003838383838383838383828685911333B04575344455630303031000003051400000500000001000000C0A800FE3139322E3136382E312E34006473703D343139362669706D3D30266264000106005000010045BEE65A4C010000050600000904000000000A0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

Ich habe das Byte Array in eine Hexzeichenfolge geändert:
Java:
clientSocket.receive(receivePacket);
                String modifiedSentence = new String(receivePacket.getData());
                System.out.println("FROM SERVER:" + modifiedSentence);

                char[] HEX_ARRAY = "0123456789ABCDEF".toCharArray();
                char[] hexChars = new char[receivePacket.getData().length * 2];
                for (int j = 0; j < receivePacket.getData().length; j++) {
                    int v = receivePacket.getData()[j] & 0xFF;
                    hexChars[j * 2] = HEX_ARRAY[v >>> 4];
                    hexChars[j * 2 + 1] = HEX_ARRAY[v & 0x0F];
                }
                System.out.println(new String(hexChars));

Nun ist an Position 21 in dem String eine IP Adresse:
C0A80001
das ergibt:
192 168 0 1

Wie kann ich das in einen String wandeln?


Danke
 

Robert Zenz

Top Contributor
Uff, du hast dich da ein biszchen verrannt. Du bekommst binaere Daten als Antwort, also quasi sowas:

Java:
byte[] responseData = new byte[] { 1, 2, 3, 4, ... };

Und daraus kannst du dann deine IP Adresse beziehen, eine Umwandlung in einen String ist absolut nicht notwendig. Eher sowas:

Java:
int IP_ADDRESS_OFFSET = 11;

byte[] receivedData = receivePaket.getData();
int[] ipAddressBytes = new int[] {
        receivedData[IP_ADDRESS_OFFSET + 0] & 0xff,
        receivedData[IP_ADDRESS_OFFSET + 1] & 0xff,
        receivedData[IP_ADDRESS_OFFSET + 2] & 0xff,
        receivedData[IP_ADDRESS_OFFSET + 3] & 0xff };

String ipAddress = Integer.toString(ipAddressBytes[0])
        + "."
        + Integer.toString(ipAddressBytes[1])
        + "."
        + Integer.toString(ipAddressBytes[2])
        + "."
        + Integer.toString(ipAddressBytes[3]);

System.out.println(ipAddress);
 

KonradN

Super-Moderator
Mitarbeiter
In Ergänzung zu Robert: Generell könnte man hier auch die Klassen vom Java Framework nehmen. Da wäre Inet4Adress zu nennen mit
Java:
        InetAddress address = Inet4Address.getByAddress(new byte[] {(byte)0xC0, (byte)0xA8, 0x00, 0x1});
        System.out.println(address.getHostAddress());

Da natürlich die 4 Bytes, die Du aus dem UDP Paket gelesen hast, verwenden. Ich habe hier einfach nur einmal die gegebenen Beispiel-Daten als Literale eingefügt.
 

Fohnbit

Top Contributor
Danke! Die Konvertierung zu String diente vor allem der Lesebarkeit und "suchen" der passenden Inhalte in der Antwort.

Klappt perfekt!
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
krgewb Antwort bei DELETE bekommen? Java Basics - Anfänger-Themen 2
W GET Anfrage resultiert in unendlicher Antwort Java Basics - Anfänger-Themen 1
G Wie wartet man bis ein URL eine Antwort zurückgibt? Java Basics - Anfänger-Themen 5
O Warum ist meine Antwort falsch? Java Basics - Anfänger-Themen 3
K Unerwartete Antwort Java Basics - Anfänger-Themen 1
R Antwort vom Server an mehreren Clients senden Java Basics - Anfänger-Themen 3
E Mathematische Aufgabe: Antwort entspricht nicht der Lösung Java Basics - Anfänger-Themen 5
Koookie Kleines Frage - Antwort Programm (Anfänger) Java Basics - Anfänger-Themen 5
E Brauche eine Antwort zum Thema RegEx ( Alternative zur Lösung auch gesucht ) Java Basics - Anfänger-Themen 5
K Erste Schritte Frage Antwort Spiel - Fragen zur Planung Java Basics - Anfänger-Themen 2
J Frage Antwort Spiel - Wie Zeitcountdown realisieren? Java Basics - Anfänger-Themen 2
C Warten auf Antwort Java Basics - Anfänger-Themen 22
B Frage Antwort Java Basics - Anfänger-Themen 13
M Aus CSV-Datei lesen und anzeigen (bitte schnell um Antwort) Java Basics - Anfänger-Themen 6
J Leichte Java Anfängerfrage. Bitte schnelle Antwort. :) Java Basics - Anfänger-Themen 10
C Antwort header anzeigen Java Basics - Anfänger-Themen 5
G Ausg. in JSP erzeugen die als Antwort an Client gesch. wird Java Basics - Anfänger-Themen 2
M Sockets. Bekomm keine Antwort vom Server. Java Basics - Anfänger-Themen 7
E Hash Code dekodieren? Java Basics - Anfänger-Themen 20
Z Dekodieren Java Basics - Anfänger-Themen 8

Ähnliche Java Themen


Oben