On Thu, 2008-04-17 16:35:28 +0200, Michael Westermann <[EMAIL PROTECTED]> wrote: > On Thu, Apr 17, 2008 at 04:22:25PM +0200, Conrad Berhörster wrote: > > On Wednesday 16 April 2008 16:36:02 Michael Westermann wrote: > > > ne kurze Frage zum Setzen von TCP-Timeouts in Linux C-Progs. > > > > > > > > > Ich habe einen tcp-client der mit einem tcp-server connected ist. > > > > > > Jetzt ziehe ich die Strippe vom Server und der krigt sehr lange > > > zeit nichts mit. > > > > > > Jetzt bin ich auf die Idee gekommen die keepalive time runter zu > > > setzten. > > > > > > > > > int keepalive=75; > > > > > > setsockopt(clientfd,SOL_SOCKET,SO_KEEPALIVE, &keepalive > > > ,sizeof(keepalive))); > > > > > > > > > und nichts ändert sich. Ich nutze select zum Horchen auf der > > > Strippe. > > > > > > Was kann ich noch machen um die Timeout Zeit zu verkürzen? > > > > wenn ich das richtig in erinnerung habe, kannst Du den select timer > > runtersetzen. > > das ist nicht das Problem, der select kommt aus dem timeout ganz > normal mit timeout zurück. > > Ich will aber feststellen ob der Server nicht mehr da ist, da > merkt er im normalfall erst nach 2h, eben diese 2h will ich verkürzen.
Du kannst nur systemweit an net.ipv4.tcp_keepalive_time
herumschrauben. Portable Varianten, um das per-socket zu machen, gibts
IMHO nicht. Alternativ: Vielleicht gibt das Protokoll so eine Art von
NOP-Kommando her? Dann kannst Du via nonblocking und select()
arbeiten. Ansonsten ist es ein *feature* von IPv4, daß eine
Verbindung über Stunden und Tage inaktiv sein kann, ohne
kaputtzugehen.
MfG, JBG
--
Jan-Benedict Glaw [EMAIL PROTECTED] +49-172-7608481
Signature of: Friends are relatives you make for yourself.
the second :
signature.asc
Description: Digital signature
-- Linux mailing list [email protected] subscribe/unsubscribe: http://lug-owl.de/mailman/listinfo/linux Hinweise zur Nutzung: http://www.lug-owl.de/Mailingliste/hints.epo
