User since
2003-08-04
7321
Artikel
ModeratorIn
schau dir
IO::Socket::INET und
IO::Select
an
User since
2003-08-04
7321
Artikel
ModeratorIn
hier ist mal ein beispiel
http://www.cotse.com/mailing-lists/todays/att-0000/01-dlfnbof.pl
der rest geht z.b. mit gethostbyname
siehe Socket module
User since
2004-03-23
2
Artikel
BenutzerIn
Hallo,
ich bin im Moment dabei einen DoppelKopf Server zu programmieren, nun stoße ich jedoch schon bei der Konzeption auf größere Probleme.
Wie schaffe ich es mit 4 Clients "gleichzeitig" zu kommunizieren.
Ich würde gerne sowas haben wie ein Array mit 4 Handels, in dem ich jeweils die Kommunikation mit den Clients regeln kann...
mein erster Versuch:
1 Dad, der die eigentliche Arbeit macht
4 Childs forken, die im Prinzip nichts anderes tun, als sich um die Connection kümmern und die Daten an den "Dad" weiterleiten. Aber wie bekomm ich das hin ?
wenn ich mit Pipes, Socketpair, UNIX Domain Socket... arbeite
hab ich entweder genau den gleichen Aufwand wie als würde ich sofort einen "non forking Multiplex" basteln (wie man so schön sagt) sprich mit Select rumfummeln... oder ich hab probleme mit dem Blocking...
zweiter Versuch: sofort einen "non forking Multiplex" basteln ;)
ja aber wie... ? hat jemand da was brauchbareres als die Kurzanleitung von "Advanced Perl Programming". Ich brauch ja auch sowas wie bidirektionale Kommunikation...
Ich bin momentan fast so weit, einfach alles mit ner ID zu versehen und in eine Datei zu schreiben etwa so:
Server->Player1: your cards 3 13 17 23 36...
Player4->Server: I have an Solo: "IWAN"
die dann alle Childs ständig auslesen und sich raussuchen was sie was angeht ... allerdings ist das nicht gerade ellegant .. :)
hoffe ihr könnt mir helfen mfg Heinrich
User since
2004-03-23
2
Artikel
BenutzerIn
ok, hab ich eigentlich schon gemacht, aber vielleicht komm ich ja heute etwas weiter ... ;)
Noch ein paar Fragen:
- Gibt es sowas sie ein Array mit Referenzen auf Handels ?
... ohne tie oder TypeGlobs zu verwenden ?
- wie bekomme ich die IP von einem Client raus, wenn ich
den (server) socket mit IO::Socket::INET geöffnet habe ?