Hallo,
ich habe eine Stromsteckerleise mit TCP/IP inteface, mit dem ich die einzelnen Steckdosen fern aus und anmachen kann. Zu diesem Zweck habe ich auch eine kleine Windows Anwendung mitbekommen mit der man das sehr einfach machen kann. Nun möchte ich mir aber eine kleine Android-Anwendung schreiben, mit der ich das auch von unterwegs machen kann.
Zu diesem Zweck habe ich mir mit Wireshark angeschaut, wie sich die Steuersoftware mit der Steckdose verbindet und was dann für Daten übertragen werden.
Den Verbindungsaufbau und das senden/empfangen der ersten steuersingnale konnte ich inzwischen mit einem java.net.Socket und OutputStream bzw. InputStream nachbauen. Langsam wird es aber ein bisschen komplizierter und mich nerft dieses Konstrukt mit der while-schleife um den input.read();. Um nämlich die einzelnen TCP-Packete von einander zu trennen, packe ich die ankommenden Bytes in ein Array und vergleiche dann die letzten Stellen mit den Varianten, die ich im Wire-Shark-Trace gesehen habe. Das ist natürlich sehr fehleranfällig und funktioniert auch nur so lange, wie ich die Struktur des ankommenden Packetes kenne.
Nun zu meiner Frage. Gibt es nicht eine einfachere bzw. elegantere Lösung um die einzelnen TCP-Packete von ein ander zu trennen und dann auszuwerden?
liebe Grüße, Soahc
ich habe eine Stromsteckerleise mit TCP/IP inteface, mit dem ich die einzelnen Steckdosen fern aus und anmachen kann. Zu diesem Zweck habe ich auch eine kleine Windows Anwendung mitbekommen mit der man das sehr einfach machen kann. Nun möchte ich mir aber eine kleine Android-Anwendung schreiben, mit der ich das auch von unterwegs machen kann.
Zu diesem Zweck habe ich mir mit Wireshark angeschaut, wie sich die Steuersoftware mit der Steckdose verbindet und was dann für Daten übertragen werden.
Den Verbindungsaufbau und das senden/empfangen der ersten steuersingnale konnte ich inzwischen mit einem java.net.Socket und OutputStream bzw. InputStream nachbauen. Langsam wird es aber ein bisschen komplizierter und mich nerft dieses Konstrukt mit der while-schleife um den input.read();. Um nämlich die einzelnen TCP-Packete von einander zu trennen, packe ich die ankommenden Bytes in ein Array und vergleiche dann die letzten Stellen mit den Varianten, die ich im Wire-Shark-Trace gesehen habe. Das ist natürlich sehr fehleranfällig und funktioniert auch nur so lange, wie ich die Struktur des ankommenden Packetes kenne.
Nun zu meiner Frage. Gibt es nicht eine einfachere bzw. elegantere Lösung um die einzelnen TCP-Packete von ein ander zu trennen und dann auszuwerden?
liebe Grüße, Soahc