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  :

Attachment: 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

Antwort per Email an