Kommunikation zwischen zwei gleichwertigen Programmen

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
gree
User
Beiträge: 9
Registriert: Samstag 27. August 2005, 16:56
Kontaktdaten:

Kommunikation zwischen zwei gleichwertigen Programmen

Beitragvon gree » Freitag 27. Januar 2006, 18:26

Moin.

Ich hab da mal ein Problem:

Ich möchte ein Othello (Reversi) Programm schreiben, dass man paarweise übers Netzwerk spielen kann. Da immer nur 2 Leute das spielen können, würde ich gerne darauf verzichten, einen 3. Computer als server benutzen zu müssen. Schöner wäre es, könnten die 2 programme sch direkt unterhalten.
Ich wüsste nun, wie ich das umsetzen könnte, wenn ich 2 programme schreibe, eines server, das andere client, die sich unterhalten können, aber da beide exakt das selbe machen (nach klick abschicken welches Feld gewählt wurde, und dann warten bis am anderen computer geklickt wird und die Feldkoordinaten von ihm entgegennehmen...) hätte ich viel lieber ein Programm, dem ich die IP des jeweiligen Partners sage, und das dann mit diesem Quatschen kann.

Wie könnte man solch eine Kommunikation, bei der beide sozusagen gleichzeitig server und client sind, umsetzen?

Vielen Dank im Voraus!
BlackJack

Beitragvon BlackJack » Freitag 27. Januar 2006, 23:46

Doch einen Server programmieren. Das bedeutet ja nicht, dass der auf einem 3. Rechner laufen muss. Der kann problemlos bei einem der beiden Spieler laufen.

Für eine wirklich einfache Kommunikation zwischen den Programmen ist Pyro (Python Remote Objects) einen Blick Wert.
dev
User
Beiträge: 49
Registriert: Montag 23. Januar 2006, 09:52
Kontaktdaten:

Re: Kommunikation zwischen zwei gleichwertigen Programmen

Beitragvon dev » Samstag 28. Januar 2006, 10:53

gree hat geschrieben:Wie könnte man solch eine Kommunikation, bei der beide sozusagen gleichzeitig server und client sind, umsetzen?

Indem Du Dich einfach von der gedanklichen Fessel Server/Client verabschiedest.

Abstrakt formuliert:

    - Programm a lauscht auf Rechner A auf Port 4711
    - Programm b lauscht auf Rechner B auf Port 4711

    [wir lassen mal service propagation od. discovery aussen vor]

    - Programm a will nun mit Programm b spielen und schickt eine
    Nachricht an Port 4711 auf Rechner B
    - Programm b ist einverstanden und quittiert mit einer Nachricht an Port 4711 auf Rechner A
    - Programm a macht den ersten Zug und schickt eine
    Nachricht an Port 4711 auf Rechner B
    - Programm b macht den erwidert den Zug und schickt eine
    Nachricht an Port 4711 auf Rechner A
    - und so weiter und so fort


Was Du dann als Protokollgrundlage nutzt, ob XML-RPC, den LineReceiver von Twisted oder "nur" socket ist relativ wurscht.

Ciao,
dev
gree
User
Beiträge: 9
Registriert: Samstag 27. August 2005, 16:56
Kontaktdaten:

Beitragvon gree » Samstag 28. Januar 2006, 19:10

Danke.

Von der gedanklichen Fessel hatte ich mich am Abend noch befreit, und das ganze nur mit socket umgesetzt. Dummer Weise funktioniert es noch lange nicht. ;-)
Was sind denn die anderen Möglichkeiten für welche?

Pyro hatte ich mir, dank Suchfunktion, auch mal angeschaut, bin aber nicht so ganz schlau draus geworden, und außerdem weiß ich nicht ob das dann in der Schule auch läuft...?
gree
User
Beiträge: 9
Registriert: Samstag 27. August 2005, 16:56
Kontaktdaten:

Beitragvon gree » Sonntag 29. Januar 2006, 02:13

Juhu. Es funzt jetzt, und ich hab auch gleich noch ein paar neue KI-Strategien geschrieben. Is zwar nichts bei, was irgendwie stark wäre, aber nette Experimente sinds schon. :-)
Soll ich es mal hochladen?
Vielleicht hat ja noch jemand einen Verbesserungsvorschleg, oder stellt fest, dass ich ganz fürcherliche Fehler gemacht hab...

Danke und viel Glück.
dev
User
Beiträge: 49
Registriert: Montag 23. Januar 2006, 09:52
Kontaktdaten:

Beitragvon dev » Sonntag 29. Januar 2006, 11:23

gree hat geschrieben:Juhu. Es funzt jetzt,

Gratulation.

gree hat geschrieben:Soll ich es mal hochladen?

warum nicht, so kann ja dann vielleicht mal jemandem als Stütze oder Abschreckung dienen. :wink:

Ciao,
dev

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder