Socket String InputStream in hex umwandeln

samet

Neues Mitglied
Hallo Leute, bin relativ neu in Java (versuche als C Entwickler Java zu lernen) und versuche gerade einen TCP Client für Android bzw. das Senden und Empfangen zum Server.
Ich erzähle mal von Anfang an: Der Server läuft auf einem OBD2 Wifi Adapter (damit kann man im Auto das Steuergerät auslesen etc.). Da es diese Adapter schon für 10 Euro gibt und aus China kommen, gibt es dementsprechend keine Informationen über den Server.

Verbinden klappt und durch rumprobieren habe ich es geschafft auch zu Senden und zu Empfangen.

Verbinden und Emfpangen in einem Thread (eigene .java Datei):
Java:
public class TCPConnect implements Runnable {
    public static final String SERVER_IP = "192.168.0.10";
    public static final int SERVER_PORT = 35000;
 
    public static InputStream is;
    public static OutputStream os;
 
    public void run() {
        try {
            InetAddress serverAddr = InetAddress.getByName(SERVER_IP);
            MainActivity.TCPinstance.my_socket = new Socket(serverAddr, SERVER_PORT);
            TCPSend.var_Send = true;
 
            os = MainActivity.TCPinstance.my_socket.getOutputStream();
 
            is = MainActivity.TCPinstance.my_socket.getInputStream();
 
 
            MainActivity.handler.sendEmptyMessage(0);
            while(TCPSend.var_Send){
                BufferedReader rd = new BufferedReader( new InputStreamReader(is));
                String line = rd.readLine();
 
                System.out.println(line);
            }
/*            try{
 
 
 
                while (TCPSend.var_Send){
                    BufferedReader rd = new BufferedReader( new InputStreamReader(is));
                    String line;
                    StringBuilder sb = new StringBuilder();
                    line = rd.readLine();
                    sb.append(line);
                    System.console().writer().println(sb.toString());
                }
 
            } catch (IOException e){
                MainActivity.handler.sendEmptyMessage(5);
            }*/
 
 
        } catch (UnknownHostException e1) {
            MainActivity.handler.sendEmptyMessage(1);
        } catch (IOException e1) {
            MainActivity.handler.sendEmptyMessage(1);
        }
 
        MainActivity.handler.sendEmptyMessage(0);
    }
}

Sende in einem Thread (und eigene .java Datei):
Java:
public class TCPSend implements Runnable{
    public static boolean  var_Send = false;
 
    public void run(){
        String strSend;
        strSend = new StringBuilder(String.valueOf(MainActivity.Edit_Send.getText().toString())).append("\r").toString();
            try{
                TCPConnect.os.write(strSend.getBytes());
                TCPConnect.os.flush();
            } catch (IOException e){
 
            }
    }
}

Socket Schließen (auch eigene .java Datei):
Java:
public class TCPClose {
    public Socket my_socket = null;
 
    public void Disconnect() {
        try {
            if(my_socket != null) {
                my_socket.close();
                my_socket = null;
 
                TCPSend.var_Send = false;
            }
        } catch (UnknownHostException e1) {
            MainActivity.handler.sendEmptyMessage(3);
        } catch (IOException e1) {
            MainActivity.handler.sendEmptyMessage(3);
        }
 
        MainActivity.handler.sendEmptyMessage(2); //Connection_State = Disconnected.
    }
}

Ehrlich gesagt habe ich es nicht geschafft das alles in einer Datei zu bündeln aber es klappt ja auch so.

Wie ihr sieht sende und empfange ich als String, was auch klappt.

Der empfangene Text kann sowohl ein normaler Text sein, z.B. "ELM327 v1.5", als auch eine 8 Byte lange hex Zahl z.B. "FD A8 F1 FF 1F D0 03 20". Diese Zahl hat eine Bedeutung die im späteren Programm verarbeitet werden soll. Ich brauche beispielsweise Byte 3 und 4, die muss rausziehen aus den 8byte.

Da aber sowohl Text als auch hex kommen, denke ich ist ein String die beste Wahl.
Wie kann ich aber es der hex Zahl 'FD A8 F1 ...' die in String line gespeichert wird zu einem hex konvertieren um dann im weiteren Programm damit weiter zu rechenen.

Also meine Fragen:
- Wie kann ich aus dem String wieder ein hex machen, aber so das was drin erhalten bleibt? Also FD soll zu 0xFD.
- Wie kann ich einzelne Bytes rausziehen.
 

Flown

Administrator
Mitarbeiter
String splitten, dann kannst du mit Index darauf zugreifen. Mit Integer::parseInt(String, int) einen String in eine Zahl mit Radix umwandeln und dann kannst du auch wieder HexZahlen mit String.format/Integer.format ausgeben lassen:
Java:
String hexString = "FD A8 F1 FF 1F D0 03 20";
String[] splittedHex = hexString.split("\\s+");
for (int i = 3; i <= 4; i++) {
  byte b = (byte) Integer.parseInt(splittedHex[i], 16);
  System.out.format("%X%n", b);
}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
T String von Client zu Server kommt nicht an Netzwerkprogrammierung 92
T Brauche Hilfe beim GET-String für HttpURLConnection Netzwerkprogrammierung 4
T server empfängt nur 1 Buchstaben vom String Netzwerkprogrammierung 1
N Name eines Attributes aus einem festen String und einer Variablen generieren Netzwerkprogrammierung 5
T Socket Gleiche String ungleich? Netzwerkprogrammierung 8
M Socket String Arrays über Socket an Server schicken Netzwerkprogrammierung 2
F String in Datenbank speichern Netzwerkprogrammierung 1
I RMI String Netzwerkprogrammierung 2
precoc String Array versenden Netzwerkprogrammierung 7
T Socket String zu Socket Netzwerkprogrammierung 26
7 String an Server Netzwerkprogrammierung 2
lumo String[] wird zu null bei Serialisierung Netzwerkprogrammierung 8
S WebService, 4-stelliger String (Jahr) als Calendar Netzwerkprogrammierung 5
M String an PHP Script aus Java übergeben Netzwerkprogrammierung 12
N String als byte Array über Socket versenden Netzwerkprogrammierung 8
M Messenger - String oder Objekte Netzwerkprogrammierung 4
T Socket Nullterminierten String lesen Netzwerkprogrammierung 4
J Datei übertragen ja String + datei übertragen nein Netzwerkprogrammierung 5
H String Array durch einen Stream schicken. Netzwerkprogrammierung 4
N Socket Stream in String Netzwerkprogrammierung 4
J Browser-String angeben Netzwerkprogrammierung 5
S String[] über Socket senden Netzwerkprogrammierung 3
F Stream wird als Char übertragen. Char -> in String umwand Netzwerkprogrammierung 5
G String in InetAddres umwandeln klappt nicht Netzwerkprogrammierung 5
A String per ByteBuffer empfangen? Netzwerkprogrammierung 6
ModellbahnerTT Problem feste String ins Netzwerk zu geben Netzwerkprogrammierung 5
G UTF-8 in STring umwandeln oder umgedreht Netzwerkprogrammierung 12
F String in eine URL umwandeln Netzwerkprogrammierung 7
P string over net Netzwerkprogrammierung 4
T Html-Source über URL in einen String speichern? Netzwerkprogrammierung 16
B HEX String zu einem Byte Array ? *verzweiflung* :( Netzwerkprogrammierung 16
K String zurück liefern ! Netzwerkprogrammierung 4
S SSLSocketFactory.createSocket(String hostname, int port),wo? Netzwerkprogrammierung 5
O Ip-String in byte[]-Array umwandeln? Netzwerkprogrammierung 3
C gesendeten String einlesen Netzwerkprogrammierung 3
G String to Socket ? Netzwerkprogrammierung 3
A StringCorruptedException: invalid String header Netzwerkprogrammierung 2
L Socket Wie kann man in Java die Anzahl der Objekte in einem InputStream sehen ohne ihn durchgehen zu müssen Netzwerkprogrammierung 1
D GZIP InputStream lesen ohne zu encoden Netzwerkprogrammierung 1
F Java Server Scanner oder InputStream kann nicht gelsesen werden! Netzwerkprogrammierung 6
R Socket InputStream readObject > Connection Reset Netzwerkprogrammierung 3
windl InputStream cachen Netzwerkprogrammierung 3
K Socket InputStream wird nicht erzeugt Netzwerkprogrammierung 4
M Socket InputStream liest nicht vollständig Netzwerkprogrammierung 7
M Was macht Thread, wenn er aus einem "leeren" Inputstream liest ? Netzwerkprogrammierung 5
K Byte für Byte aus InputStream lesen Netzwerkprogrammierung 5
F JSch - inputstream is closed Netzwerkprogrammierung 13
M Socket InputStream sendet ausgaben von OutputStream zurück Netzwerkprogrammierung 2
D Inputstream to Outputstream Netzwerkprogrammierung 3
M InputStream and ObjectInputStream zur gleichen Zeit Netzwerkprogrammierung 11
T Inputstream -> verschiedene Objekte lesen Netzwerkprogrammierung 3
MQue Inputstream Timeout Netzwerkprogrammierung 2
S Servlet InputStream leer?! Netzwerkprogrammierung 14
G HTTP-Request InputStream-Problem Netzwerkprogrammierung 5
P Inputstream "verfügbar" Netzwerkprogrammierung 4
G JPG im InputStream Netzwerkprogrammierung 2
A InputStream liest immer komplettes PHP-Script Netzwerkprogrammierung 6
A InputStream ließt nur 65536 Zeichen anstatt ganzer Puffer Netzwerkprogrammierung 8
A inputstream teilen? Netzwerkprogrammierung 4
D InputStream (Socket) mit BufferedInputStream puffern Netzwerkprogrammierung 2
M Sockets und InputStream Netzwerkprogrammierung 8
R Client nimmt den Inputstream nicht an Netzwerkprogrammierung 5
S Mail anhang in InputStream packen Netzwerkprogrammierung 5
M InputStream - Bytes gehen verloren? Netzwerkprogrammierung 3
E Problem bei Sockets/InputStream über externe Klasse Netzwerkprogrammierung 5
André B. In einen InputStream schreiben? Netzwerkprogrammierung 6
G inputstream hat plötzlich weniger inhalt Netzwerkprogrammierung 8
Z ProgressBar auf BufferedOutput- & -InputStream Netzwerkprogrammierung 2
T curl request in java umwandeln Netzwerkprogrammierung 4
N URL mit Pfadangabe hinter dem Dateinnamen umwandeln Netzwerkprogrammierung 6

Ähnliche Java Themen

Neue Themen


Oben