![]() |
IdIRC: Ping Timeout nach 2-3 min?
Hi,
ich arbeite inmoment mit der indy irc komponente, wenn ich allerdings 2-3 min nichts sage, gibts n quit wegen ping timeout. was kann ich dagegen tun? ich hab die onpingpong-procedure gesehen, allerdings weiss ich nicht wie man einen pong senden kann :| |
Re: IdIRC: Ping Timeout nach 2-3 min?
hi, vielleicht hilft dir das [TClientSocket] :
Delphi-Quellcode:
..
var s:string; i:integer; sl:TStringList; begin sl:=tstringlist.create; sl.text:=socket.receivetext; for i:=0 to sl.count-1 do begin s:=sl.strings[i]; If Pos('PING', s)<>0 Then begin s[Pos('PING', s)+1]:='O'; cs.Socket.SendText(s+#13#10); end; if Pos('376', s)<>0 then begin cs.socket.SendText('JOIN #testchannel'+#13#10); end; end; .. |
Re: IdIRC: Ping Timeout nach 2-3 min?
hmm thx, nur wenn ich das an den server sende, krieg ich die fehlermeldung hier:
Zitat:
|
Re: IdIRC: Ping Timeout nach 2-3 min?
zuerst ja nick geben oder?
Delphi-Quellcode:
//On Connect
Socket.sendtext('USER abc '+cs.socket.localhost+' '+cs.socket.localaddress+' :test'+#13#10); socket.SendText('NICK abc'+#13#10); //nick ist dann abc |
Re: IdIRC: Ping Timeout nach 2-3 min?
hmm thx, hab gerade nochma nachgeguckt, dein code wird beim onconnect schon ausgeführt (gerade nachgeguckt), jetz sende ich beim onconnect ein PING und es funzt :) thx :P
|
Re: IdIRC: Ping Timeout nach 2-3 min?
hmm :roll: hab gerade nochma ins irc geguckt und wieder ping timeout.. allerdings erst nach 10 min.. muss ich irgentwo ein timer stellen der alle x sekunden PING sendet?
|
Re: IdIRC: Ping Timeout nach 2-3 min?
So muss es funktionieren
Delphi-Quellcode:
//on read
procedure TMainForm.csRead(Sender: TObject; Socket: TCustomWinSocket); var s:string; i:integer; sl:TStringList; begin sl:=tstringlist.create; sl.text:=socket.receivetext; for i:=0 to sl.count-1 do begin s:=sl.strings[i]; If Pos('PING', s)<>0 Then begin s[Pos('PING', s)+1]:='O'; cs.Socket.SendText(s+#13#10); end; if Pos('376', s)<>0 then begin cs.socket.SendText('JOIN #testchannel'+#13#10); end; end; //on connect procedure TMainForm.csConnect(Sender: TObject; Socket: TCustomWinSocket); begin Socket.sendtext('USER abc '+cs.socket.localhost+' '+cs.socket.localaddress+' :test'+#13#10); socket.SendText('NICK abc'+#13#10); end; |
Re: IdIRC: Ping Timeout nach 2-3 min?
ihr solltet euch mal die RFC's durchlesen
@Basic-Master: du musst immer dann einen PONG(nicht PING!) senden, wenn der Server dir einen PING sendet, das kannst du im onRaw Ereignis abfangen!! der server sendet den ping um zu gucken ob du überhaupt noch da bist, was der fall ist wenn PONG zurückkommt |
Re: IdIRC: Ping Timeout nach 2-3 min?
nur mal so nebenbei...
a.) die Indy kompo schickt schon ein pong zurück! b.) nen pong zurück senden musst du also nur bei TClientSocket x.) Indy IdIRC is mist |
Re: IdIRC: Ping Timeout nach 2-3 min?
*zustimm*
hab ganz vergessen das es hier um die indys geht :roll: obwohl in onraw erwähnte :mrgreen: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:30 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz