Java Client "nachbauen"

nico525

Ensign
Registriert
Feb. 2009
Beiträge
185
Hallo Leute,

ich wusste jetzt wegen dem Titel nicht ganz genau, aber ich denke dass hat es gut getroffen... Nun erst mal zu meinem Problem:

Ich habe ein kleines Gerät bei mir im Netzwerk stehen, dass von einer Android oder iOS App aus Befehle empfängt und diese in Funksignale umwandelt. Nun möchte ich aber, zwecks fehlender Funktionalitäten (Keine Makros, Zeitsteuerung, kA was mir sonst noch einfällt) das ganze System auf den Rechner "portieren".
Dazu habe ich zunächst mal den Datenverkehr mit Wireshark analysiert und festgestellt, dass alles unverschlüsselt abläuft. Das ist zwar meiner Meinung nach für die Firma nicht zu empfehlen, aber es wird mir die Sache wahrscheinlich bedeutend vereinfachen.

Da ich aber leider kaum Ahnung von TCP/IP habe, wollte ich fragen, ob ihr mir für diesen speziellen Fall Literatur empfehlen könnt.
Vielleicht habt ihr ja aber schon mal etwas ähnliches gemacht und könnt mir helfen.Ich stehe jetzt vor dem Problem, dass ich zwar eigentlich alle benötigten Daten durch Wireshark besitze, aber keine Ahnung habe, wie ich jetzt eigene Pakete verschicken kann, die den selben Inhalt besitzen?

Vorzugsweise würde ich das ganze gerne in Java realisieren, da ich hier bereits die größte Erfahrung gesammelt habe, allerdings belege ich dieses Jahr auch ein C/C++ Modul in der Uni, so dass ich dieser Realisierung nicht abgeneigt wäre. Dies wird aber wahrscheinlich weit über das Verständnis der Vorlesung, sowie meinen C/C++ Kenntnissen hinaus ragen.

Über Wireshark weiß ich, dass die Befehle die folgende Form besitzen:
Code:
{"TIMESTAMP":"1414152534","CMD":"ITEM_VALUE_SET","PROTOCOL":"1.8","VALUES":[{"STATE":"VALUE_DIMM","NUMBER":21,"VALUE":54}]}
Sieht an sich also eigentlich gar nicht so schwer aus, die Systematik dahinter habe ich denke ich auch verstanden... Anbei jetzt noch ein Screenshot aus Wireshark, um weitere Informationen zu bekommen.

Wäre echt geil, wenn mir hier jemand weiterhelfen könnte! Sei es auch nur ein Hinweis zu den richtigen Büchern/Dokumentationen,

Nico
 

Anhänge

  • Bildschirmfoto 2014-10-25 um 12.01.53.png
    Bildschirmfoto 2014-10-25 um 12.01.53.png
    354 KB · Aufrufe: 186
Für den Screenshot hättest du besser ein Paket mit Inhalt anklicken sollen (eins wo Len != 0).

Das Ganze nachzubauen dürfte recht einfach werden. Sieht aus, als würden die Daten einfach als JSON formatiert übers Netz gesendet werden. Alles was du machen musst, ist so ein JSON Objekt zusammenbauen und dann als Text versenden (mit nem TCP Client - gibts in Java).
 
Dann jetzt hier noch mal mit einem übersendetem Befehl.

Kurze Frage: was machen diese "leeren" Pakete?
 

Anhänge

  • Bildschirmfoto 2014-10-25 um 12.21.58.png
    Bildschirmfoto 2014-10-25 um 12.21.58.png
    344,4 KB · Aufrufe: 172
Das sind nur die Bestätigungen der anderen Seite, dass das Paket angekommen ist.

ACK = "Bestätige!"
PSH = "Ich hab Daten für dich"
SYN = "Hallo, ich bin's"

Naja, so in etwa :p
 
Also so einen Beitrag würde ich echt gerne Liken :D

Ich hab das ganze jetzt mal versucht nachzubauen, bekomme allerdings vom Server keine Antwort? Habt ihr vielleicht ne Idee, mache ich nen Fehler?

Hier der Test-Code:
Code:
int serverPort = 9050;
String host ="192.168.178.99"; 
Socket socket = new Socket(host,serverPort); 
System.out.println("Just connected to " + socket.getRemoteSocketAddress()); 
PrintWriter toServer = 
	new PrintWriter(socket.getOutputStream(),true);
BufferedReader fromServer = 
	new BufferedReader(new InputStreamReader(socket.getInputStream()));
toServer.println("{\"TIMESTAMP\":\""+tstamp.getDateTime()+"\",\"CMD\":\"PROJECT_LIST_GET\",\"PROTOCOL\":\"1.8\"}"); 
String line = fromServer.readLine();
System.out.println("Client received: " + line + " from Server");
toServer.close();
fromServer.close();
socket.close();


Danke schon mal für deine bisherige Mühe




EDIT: Ich habe es hinbekommen, danke für eure Hilfe
 

Anhänge

  • Bildschirmfoto 2014-10-25 um 12.52.36.png
    Bildschirmfoto 2014-10-25 um 12.52.36.png
    229,6 KB · Aufrufe: 141
Zuletzt bearbeitet:
Zurück
Oben