1. Nimm jetzt an unserem 2. ADVENT-Gewinnspiel teil - Alle Informationen findest Du hier!

Netzwerkkommunikation bei Mau-Mau App

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von arkadiusj, 06.01.2012.

  1. arkadiusj, 06.01.2012 #1
    arkadiusj

    arkadiusj Threadstarter Neuer Benutzer

    Beiträge:
    4
    Erhaltene Danke:
    0
    Registriert seit:
    06.01.2012
    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
     
  2. Tom299, 06.01.2012 #2
    Tom299

    Tom299 Android-Experte

    Beiträge:
    602
    Erhaltene Danke:
    120
    Registriert seit:
    31.08.2011
    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.
     
    arkadiusj bedankt sich.
  3. arkadiusj, 06.01.2012 #3
    arkadiusj

    arkadiusj Threadstarter Neuer Benutzer

    Beiträge:
    4
    Erhaltene Danke:
    0
    Registriert seit:
    06.01.2012
    Stimmt! Daran habe ich gar nicht gedacht. :D
    Wie sieht denn dein Protokoll aus?
     
  4. Tom299, 06.01.2012 #4
    Tom299

    Tom299 Android-Experte

    Beiträge:
    602
    Erhaltene Danke:
    120
    Registriert seit:
    31.08.2011
    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 :)
     
    arkadiusj bedankt sich.
  5. DieGoldeneMitte, 06.01.2012 #5
    DieGoldeneMitte

    DieGoldeneMitte Android-Lexikon

    Beiträge:
    1,230
    Erhaltene Danke:
    256
    Registriert seit:
    05.02.2010
    Phone:
    Nexus 5X
    Tablet:
    Nexus 7 (2013)
    Darf ich mal den Oberlehrer machen?
    MD5 verschlüsselt nicht - damit signiert man nur. :flapper:

    Aber die Idee, ein pw mit einzuhashen, ist gut!
     
  6. Tom299, 06.01.2012 #6
    Tom299

    Tom299 Android-Experte

    Beiträge:
    602
    Erhaltene Danke:
    120
    Registriert seit:
    31.08.2011
    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 :)
     
  7. arkadiusj, 06.01.2012 #7
    arkadiusj

    arkadiusj Threadstarter Neuer Benutzer

    Beiträge:
    4
    Erhaltene Danke:
    0
    Registriert seit:
    06.01.2012
    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! :)
     
  8. Tom299, 06.01.2012 #8
    Tom299

    Tom299 Android-Experte

    Beiträge:
    602
    Erhaltene Danke:
    120
    Registriert seit:
    31.08.2011
    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 :)
     
  9. arkadiusj, 06.01.2012 #9
    arkadiusj

    arkadiusj Threadstarter Neuer Benutzer

    Beiträge:
    4
    Erhaltene Danke:
    0
    Registriert seit:
    06.01.2012
    Kann ich machen. :)
     

Diese Seite empfehlen