Kylc - IRC - Indy
-
Hallo erstmal,
Ich hoffe ich hab hier das richtige Forum erwischt, auch wenn es sich hauptsächlich um c/c++ Forum handelt aber irgendwie habe ich noch die große Hoffnung, daß sich jemand auffindet der mein Problem lösen kannBisher habe ich nur in Delphi programmiert und versuche mich nun etwas in Kylix. Leider treten da bei mir ein paar Problemchen auf, die ich leider momentan noch nicht in der Lage bin zu lösen. Vielleicht könnt ihr mir ja helfen.
Ich versuche mich gerade an der Socket bzw. IRC Programmierung unter Kylix und verwende dabei die Indy 9.0 Komponenten momentan benutze ich die Kylix 30 Tage Trial Version in der die Indy Komponenten bereits integriert sind.
Also Betriebssystem kommt bei mir Suse 8.2 zum Einsatz (Hatte es zwar schon unter 9.1 versucht aber da macht Kylix massive Probleme, aber das nur am Rande)
Ich habe nun unter Kylix ein kleines Programm geschrieben (eher momentan zusammengeklickt), bestehend aus der INDY IRC-Client komponente, einem Memofeld und zwei Button
Bei einem onClick auf den Button1 soll zum Server connected werden.
Bei einem onConnect und einem onconnected wird in das memomeld kurz eine Nachricht geschrieben, daß das Ereignis ausgelöst wurde.
Weiterhin gibt es noch eine Procedure die die Daten ins memo reinschreibtprocedure TForm1.IdIRC1Notice(Sender: TObject; AUser: TIdIRCUser; AChannel: TIdIRCChannel; Content: String); begin memo1.lines.add(Content); end;
Wenn ich das Programm nun unter Kylix ausführe funktioniert alles ohne Probleme.
Im Memo erscheint folgendesonConnected onConnect ***Looking up your hostname ***Checking Ident ***Found your hstname ***no ident response Ping pong
und danach kommen die normalen MOTD vom Server. Es scheint also alles zu klappen.
Nur zur Vollständigkeit hier noch das Ergebnis vom Ethereal SnifferNICK kasimaro NOTICE AUTH :*** Looking up your hostname USER otilien 192.168.0.134 192.168.0.134 :hulato NOTICE AUTH :*** Checking Ident NOTICE AUTH :*** Found your hostname NOTICE AUTH :*** No ident response PING :940466102 PONG :940466102
Sieht also auch alles ganz OK aus...
Nun aber mein wirkliches Problem. Wenn ich nun das Programm compiliere und das "fertige" Programm unter der Shell ausführe tut sich nicht wirklich viel. Das Programm startet zwar und ich bekomme bei Buttonklick auch die zwei Ereignisse onconnect und onconnected. Das war es allerdings auch schon.
Das Ergbenis im Memo sieht wiefolgt ausonConnected onConnect
Mehr leider nicht
Das Ergbenis vom Ethereal sagt folgendes:NICK kasimaro NOTICE AUTH :*** Looking up your hostname NOTICE AUTH :*** Checking Ident NOTICE AUTH :*** Found your hostname USER otilien 192.168.0.134 192.168.0.134 :hulato NOTICE AUTH :*** No ident response PING :436143141 :port80c.se.quakenet.org 513 kasimaro :Your client may not be compatible with this server. :port80c.se.quakenet.org 513 kasimaro :Compatible clients are available at ftp://ftp.undernet.org/pub/irc/clients ERROR :Closing Link: kasimaro by port80c.se.quakenet.org (Ping Timeout)
Also zum einen gibt die IRC Komponente keine on Notice aus da nun der NOTICE Text nicht ans Memo weitergegeben wird. Weiterhin scheint die Komponente nun vom Shell gestartet nicht auf den Ping zu reagieren. Allerdings scheint die Komponente in gewisser Weise noch ihren Dienst zu verrichten, schließlich sendet sie Ein NICK und ein USER mit all den notwendigen Daten. Das die Komponente danach abschmiert denke ich kann man auch ausschließen. Der 2. Button den ich vorhin erwähnt habe, führt ein JOIN Channel aus. Wenn ich den Knopf drücke versucht die Komponente auch einem Channel zu joinen (ersichtlich im Ethereal) nur der Server verweigert logischerweise noch das Join weil man sich erst registrieren muß.
Wer kennt sich mit dem Problem aus oder wer weiß woran es liegen kann, daß zum Einen unter kylix alles wunderbar funktioniert und zum anderen in der compilierten Form aus dem Shell heraus eben nicht.
Das Phänomen tritt sowohl als normaler User als auch als root auf.Danke schonmal für eure Hilfe