Netzwerkkommunikation bei Mau-Mau App

A

arkadiusj

Neues Mitglied
0
Hallo Zusammen,

ein Kommilitone und ich müssen eine Mau-Mau App entwickeln. Man soll das Spiel zu zweit per Netzwerk / Internet spielen können. Hierbei stellt sich mir allerdings die Frage, wie man die Netzwerkkommunikation am Besten umsetzt. Der Server soll eine Java-Anwendung sein.

Macht es Sinn, ein Protokoll zu entwickeln (wir dachten an JSON) und dann eine einfache Socketverbindung zu verwenden oder sollte man doch lieber auf Webservices o.Ä. zurückgreifen?

Bin für hilfreiche Antworten dankbar!

Grüße
Arkadius
 
Hi,

ich benutze auch einen Java-Server, um die Kommunikation zu steuern. Da ich wissen muß, ob jemand online ist oder nicht, brauch ich ja ne richtige Verbindung (socket connection). Also glaub ich kaum, daß man mit Webservices sowas machen kann.
JSON benutz ich auch nicht, ich übertrage meine Daten direkt über die Input- und Output-Streams der Sockets und verschlüssele meine Daten mit MD5.
 
  • Danke
Reaktionen: arkadiusj
Tom299 schrieb:
Hi,
ich benutze auch einen Java-Server, um die Kommunikation zu steuern. Da ich wissen muß, ob jemand online ist oder nicht, brauch ich ja ne richtige Verbindung (socket connection). Also glaub ich kaum, daß man mit Webservices sowas machen kann.
Stimmt! Daran habe ich gar nicht gedacht. :D
Tom299 schrieb:
JSON benutz ich auch nicht, ich übertrage meine Daten direkt über die Input- und Output-Streams der Sockets und verschlüssele meine Daten mit MD5.
Wie sieht denn dein Protokoll aus?
 
Ich übertrage einfach Strings zwischen Server und Client. Beim Lesen parse ich dann und prüfe die Echtheit immer mit der MD5-Checksumme.

Aber da bist du ja frei und kannst deine eigenen Kommandos usw. benutzen, ganz wie du magst :)

Mal so als einfaches Beispiel:
Der Client meldet sich beim Server an, dann könnte der String des Clients z.B. so aussehen:

Code:
long time = System.currentTimeMillis();
String pw = "1234";
String toSend = "init#" + clientid + "#" + time + "#" + "deine daten#" + encodeMD5("init#" + clientid + "#" + time + "#" + pw);

Durch die Zeit (time) hast du in diesem Fall schon mal etwas dynamisches, damit die MD5 jedes Mal anders ist.
Auf Server-Seite weißt du ja, wie du den MD5 aufbaust, also liest du den InputStream, suchst z.B. nach strInput.startsWith("init") und splittest dann mittels deinem Trennzeichen, hier wäre es dann .split("#")
Damit kennst du die Parameter, um deine MD5 auf Server-Seite zu generieren und zu vergleichen. Wenns die gleiche MD5 ist, dann ist der init korrekt und "deine daten" sind die gewollten.

Vielleicht gibts noch bessere Methoden, aber ich habs erst mal so gelöst und bin damit zufrieden :)
 
  • Danke
Reaktionen: arkadiusj
Darf ich mal den Oberlehrer machen?
MD5 verschlüsselt nicht - damit signiert man nur. :flapper:

Aber die Idee, ein pw mit einzuhashen, ist gut!
 
Ja stimmt, man signiert nur ;-)

Aber ich vertraue meiner Signatur und wenn sie nicht übereinstimmt, dann kümmert mich der Datenteil bzw. die ganze Anfrage nicht. Verschlüsseln könnte man das ganze natürlich auch, aber in meinem Fall ist mir das egal, ob jemand mitsnifft oder nicht. Außerdem kann man auch noch Datenmüll reinpacken, der interessant aussieht, aber auf der anderen Seite einfach ignoriert wird :)
 
Tom299 schrieb:
Ich übertrage einfach Strings zwischen Server und Client. Beim Lesen parse ich dann und prüfe die Echtheit immer mit der MD5-Checksumme.

Aber da bist du ja frei und kannst deine eigenen Kommandos usw. benutzen, ganz wie du magst :)

Mal so als einfaches Beispiel:
Der Client meldet sich beim Server an, dann könnte der String des Clients z.B. so aussehen:

Code:
long time = System.currentTimeMillis();
String pw = "1234";
String toSend = "init#" + clientid + "#" + time + "#" + "deine daten#" + encodeMD5("init#" + clientid + "#" + time + "#" + pw);
Durch die Zeit (time) hast du in diesem Fall schon mal etwas dynamisches, damit die MD5 jedes Mal anders ist.
Auf Server-Seite weißt du ja, wie du den MD5 aufbaust, also liest du den InputStream, suchst z.B. nach strInput.startsWith("init") und splittest dann mittels deinem Trennzeichen, hier wäre es dann .split("#")
Damit kennst du die Parameter, um deine MD5 auf Server-Seite zu generieren und zu vergleichen. Wenns die gleiche MD5 ist, dann ist der init korrekt und "deine daten" sind die gewollten.

Vielleicht gibts noch bessere Methoden, aber ich habs erst mal so gelöst und bin damit zufrieden :)
Alles Klar. Geht so in die Richtung, wie wir das machen wollten. Nur das wir halt JSON für die Formatierung verwenden. :)
Vielen Dank schon mal! :)
 
Kannst mir deine Lösung bzw. den Ansatz ja auch mal irgendwann zeigen, vielleicht überzeugst du mich ja davon, daß ich auch JSON nutzen sollte :)
 
Tom299 schrieb:
Kannst mir deine Lösung bzw. den Ansatz ja auch mal irgendwann zeigen, vielleicht überzeugst du mich ja davon, daß ich auch JSON nutzen sollte :)
Kann ich machen. :)
 

Ähnliche Themen

R
  • Robby1950
2
Antworten
23
Aufrufe
954
Robby1950
R
netfreak
  • netfreak
Antworten
10
Aufrufe
437
netfreak
netfreak
R
  • raller
Antworten
15
Aufrufe
505
DOT2010
DOT2010
Zurück
Oben Unten