Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Warum ist die Verbindung instabil (PingTimeout) ? (https://www.delphipraxis.net/95123-warum-ist-die-verbindung-instabil-pingtimeout.html)

Nils_13 1. Jul 2007 13:48


Warum ist die Verbindung instabil (PingTimeout) ?
 
Hi,

ich möchte eine Verbindung zu einem IRC-Server herstellen. Nachdem etwas Zeit vergangen ist, wird die Verbindung unterbrochen. Warum ?
Host: irc.euirc.net
Port: 6667
User-ID: controller

Client ist TClientSocket.

Verbindung herstellen:
Delphi-Quellcode:
with Client do
begin
  Host := eHost.Text;
  Port := StrToInt(ePort.Text);
  Open;
end;
ClientConnect:
Delphi-Quellcode:
procedure TfrmMain.ClientConnect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
  with Client.Socket do
  begin
    SendText('NICK testnick');
    SendText('USER ' + eiD.Text + ' "" "'+ eHost.Text +'" :1337');
  end;
end;
Um die Fehlermeldung "ERROR :Closing Link: [...] (Ping timeout)" zu erhalten noch diese Zeile in OnRead:
m.Lines.Add(Socket.ReceiveText);

Florian H 1. Jul 2007 15:38

Re: Warum ist die Verbindung instabil (PingTimeout) ?
 
Antwortest du auch immer auf die Server-PING-Anfragen?

Nils_13 1. Jul 2007 15:41

Re: Warum ist die Verbindung instabil (PingTimeout) ?
 
Der gezeigte Code ist der komplette, also gehe ich mal davon aus, dass ich damit nicht darauf reagiere (bin im Netzwerkgeschäft noch nicht so lange). Wie könnte man denn darauf reagieren ?

SirTwist 1. Jul 2007 15:55

Re: Warum ist die Verbindung instabil (PingTimeout) ?
 
Lies Dir mal den RFC 2812 durch, da wird genau beschrieben, wie Server und Client miteinander kommunzieren.

Es gibt doch eine komplette IRC-Komponente, warum nimmst du die nicht. Selbst mit dieser ist es noch sehr aufwändig, einen eigenen Client zu programmieren.

Zu deinem konkreten Problem: Der IRC-Server sendet regelmäßig eine Zeile "PING", worauf der Client innerhalb von x Sekunden mit "PONG" antworten muss. Tut er das nicht, ist er raus.

Nils_13 1. Jul 2007 16:39

Re: Warum ist die Verbindung instabil (PingTimeout) ?
 
Hm, die einzige Nachricht, die ich vom Server erhalte ist der PingTimeout. Warum das ?


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:34 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz