Perl Chat (und eventorientiertes Tk)
Philipp Hasenfratz
- perl
Halihallo Perler
Ich würde da gerne einen Chat mit einem Kollegen umsetzen. Er schreibt den Chat-Server-
Daemon in C und ich realisiere den Client über Perl/Tk.
Da gibt's eine schöne Oberfläche in Tk, mit einem Message-History-Fenster und einer
Eingabemaske für die Antwort. Drückt man auf "senden" wird gesendet und wenn über das
Socket (INET-Socket zu Chat-Server) eine Antwort von einem anderen User kommt, soll diese
im Message-History-Fenster angezeigt werden. Nun, wenn man Tk verwendet geht nichts über
den MainLoop, da Tk eventbasiert ist und somit auf User-Aktionen wartet. Das ist das
Problem. Ein geforkter Prozess hört das Socket ab und wartet auf die Antworten anderer
Clients (über den Server übermittelt), wie kann ich nun dem Hauptprozess (Tk-Fenster)
ein Event auslösen, sodass das Hauptfenster aktualisiert wird (neue msg. anzeigen)?
Ein refresh-Button ist natürlich höchst unerwünscht, dann verwende ich lieber
mIRC/ICQ :-)
Über einen Signal-Handler (USR1|2) würde ich nur ungern gehen, da dies einfach ein
zu schlechter Workaround wäre. Zudem wäre ich mir nicht sicher, wie ich dann den
Refresh in Tk auslösen könnte, da dieses sowas bestimmt nicht vorsieht.
Seht ihr eine gute Lösung oder gar eine ganz einfache (Standard) Möglichkeit, die ich
übersehen habe?
Viele Grüsse
Philipp
Hi Philipp!
Seht ihr eine gute Lösung oder gar eine ganz einfache (Standard) Möglichkeit, die ich
übersehen habe?
ich kenne mich mit PERL/TK nicht gut genug/gar nicht aus um da weiterhelfen zu können, aber wieso schreibst Du den Client nicht in Java? Für sowas ist es sicher gut geeignet, nur leider braucht man dafür die VM. Jedenfalls habe ich es nach recht kurzer Zeit hinbekommen eine mini-Fensteranwendung zu schreiben, die auch wunderbar funktioniert hat. Hat zwar nur auf User-Aktionen reagiert habe aber noch ein wenig gelesen und einen kleinen TCP/IP Echo-Server probiert, und hinterher noch ein gutes Tutorial gelesen wie man einen kpl. Chat damit realisiert, das war wirklich nicht schwer, und kann sowohl als Applet in einer Webseite eingebunden sein, oder eben im eigenen Fenster.
Ist denn PERL/TK ohne jegliche Erweiterung wie Java VM lauffähig? Denn das ist der einzieg Nachteil von Java. Wobei die meisten Leute sicher über Java verfügen.
Grüße
Andreas
PS: Wieso verwendest Du keine vorhandenen Clients für einen ganz normalen IRC-Chatroom?
Halihallo Andreas
Seht ihr eine gute Lösung oder gar eine ganz einfache (Standard) Möglichkeit, die ich
übersehen habe?
ich kenne mich mit PERL/TK nicht gut genug/gar nicht aus um da weiterhelfen zu können, aber wieso schreibst Du den Client nicht in Java?
Weil ich mich dann vor meinem Kollegen blamieren würde? :-))
Das kann ich nicht, noch... ... hoffentlich lange nicht.
Für sowas ist es sicher gut geeignet, nur leider braucht man dafür die VM. Jedenfalls habe ich es nach recht kurzer Zeit hinbekommen eine mini-Fensteranwendung zu schreiben, die auch wunderbar funktioniert hat.
Ja, mit Java liesse sich bestimmt auf die schnelle ein GUI umsetzen. Genauso mit z. B.
Delphi, das wären natürlich alles Optionen.
Hat zwar nur auf User-Aktionen reagiert habe aber noch ein wenig gelesen und einen kleinen TCP/IP Echo-Server probiert, und hinterher noch ein gutes Tutorial gelesen wie man einen kpl. Chat damit realisiert, das war wirklich nicht schwer, und kann sowohl als Applet in einer Webseite eingebunden sein, oder eben im eigenen Fenster.
Hm, naja, vielleicht nehme ich die "Herausforderung" ja mal an und schreibe einen
optionalen Client in Java ;) Aber erst wollte ich dies über Perl/Tk lösen, da ich
mich darin etwas sattelfester zu glauben pflegte, nur hat sich dieser Glaube durch dieses
und letztes Posting empfindlich reduziert :-)
Ist denn PERL/TK ohne jegliche Erweiterung wie Java VM lauffähig? Denn das ist der einzieg Nachteil von Java. Wobei die meisten Leute sicher über Java verfügen.
Nun, wenn Perl und die Tk-Komponente installiert sind (was IMHO bei allen Distributionen
der Fall ist), ja. Tk könnte man einfach nachinstallieren (obwohl eben meist nicht
nötig). Nun gut, Perl haben wohl wesentlich weniger Leute installiert verglichen mit
Java.
PS: Wieso verwendest Du keine vorhandenen Clients für einen ganz normalen IRC-Chatroom?
Hab ich ja schon, aber das bereits Vorhandene hat für mich keinen Reiz (obwohl dies ein
einfacher selbstprogrammierter Chat eigentlich auch nicht hat)
---
Nun, evtl. steige ich einfach auf eine Zwei-Fenster-Architektur um, ein Fenster für das
Senden und ein Fenster (so'n nervendes Popup-Teil) das beim Empfang einer neuen
Nachricht aufpoppt. Eventuell noch ein Controler-Fenster oder so... Wäre leider auch
nur ein Workaround, aber zuviel Zeit möchte ich für dieses Kiddie-Programm auch nicht
aufwenden.
Viele Grüsse und Danke
Philipp