# Protokoll für Schiffeversenken



## zpiggy (4. Mai 2005)

Hallo,

ich habe ein Schiffeversenken in Java geschrieben z.Zeit mit Computergegner.

Jetzt soll ein ZweiPlayer Modus im Localennetzwerk hinzukommen.

Frage: Wie in etwa sollte die kommunikation zwischen den auf zwei REchnern liegenden Programmen aussehen.

Brauch ich da notwendigerweise ein Client- Server Struktur?

Bis jetzt hab ich mir UDP angeschaut und für das sinnigste gehalten.

Das heist erst horcht player zwei auf eine aktion von player 1 und antwortet mit einer Bestätigung die wiederrum player1 zum horchen auf eine Aktion von Player2 verdammt usw.

Ist das mit UDP DAategrammen leicht realisierbar - oder sollte ich ein anderes Protokoll verwenden?

gebt mir mal ein paar Tipps.....EURE MEINUNG ZÄHLT


----------



## Bert Brenner (4. Mai 2005)

Ich würd TCP nehmen da dann auch gewährleistet ist das die Pakete ankommen.

Und zur Client/Server frage: Wenigstens einer muss doch auf eine eingehende Verbindung warten.


----------



## zpiggy (4. Mai 2005)

Die Idee war ja das die abwechselnd auf anfragen warten - halt im spiel fluss. jeweils der spieler der auf den schuß des anderen wartet ist also in dem moment der server - die frage war ob ich unbedingt einen von den beisen zum server machen muss oder eben diese abwechselnde sache mit udp erreichen kann - dort ist das ankommen des packets auchb gewährleistet weil die direkte antwort immer das datenpaket zurück geben soll. und dann halt den anderen in die warteschleife schickt. ich glaub ich werd mir beides nochmal anschauen.

Ist mein erstes netzwerk Programm deshalb bin ich da etwas unsicher.


----------



## Bert Brenner (4. Mai 2005)

Der Unterschied zwischen UDP und TCP ist dir bewusst?


Abwechselnd lauschen ist auch einwandfrei in Ordnung.


----------



## zpiggy (4. Mai 2005)

Der unterschied THEORETISCH mit verbindungslos(UDP) und verbindungsorientiert(TCP) ist mir wie schon gesagt THEORETISCH ein Begriff.

Eine Konkrete Frage wäre, was ist einfacher zu implementieren?

Wie häufig würde ein UDP Paket in einem Lokalen Netz wirklich verloren gehen, aber wie schon gesagt das würde ich selbst überprüfen und dann ggf. das paket erneut senden.

Allerdings setzt man UDP ja mehr für streams ein wo ruih einmal ein paket verloren gehen kann und es auf Geschwindigkeit ankommt (habe ich zumindest gelesen)

Da ich aber nur eine Koordinate bestehend aus zwei Ziffern 0-9 sende - und diese wirklich ankommen sollten ist TCP wahrscheinlich wirklich das sicherste.

Die Frage ist wirklich was ist einfacher.......


----------



## bellmann29 (4. Mai 2005)

Hallo,

gib TCP den Vorzug. Die Implementierung ist bei beiden nicht sehr aufwendig (Wie definierst Du eigentlich Aufwand? Zeilen Code ?). Bei TCP könntest Du Dir Überprüfung z.B. sparen (somit schon mal ein wenig einfacher auf TCP-Seite). Wie wolltest Du es eigentlich prüfen? Ein UDP-Überprufungspaket schicken, welches evtl. auch nicht ankommt?
Der TCP-Server ist mit 4-10 Zeilen implementiert (ich meine nur das empfangen von Daten, UDP wäre auch nicht weniger).  Beispiele dafür gibt es genügend.

Mach es Dir selbst nicht so schwer.    

Bis dann.


----------

