tcp-timeout in c verkürzen

Jan-Benedict Glaw jbglaw at lug-owl.de
Thu Apr 17 22:13:10 CEST 2008


On Thu, 2008-04-17 16:35:28 +0200, Michael Westermann <michael at dvmwest.de> 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      jbglaw at lug-owl.de              +49-172-7608481
Signature of:                 Friends are relatives you make for yourself.
the second  :
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 189 bytes
Desc: Digital signature
URL: <http://lug-owl.de/pipermail/linux/attachments/20080417/689ba5a0/attachment.sig>


More information about the Linux mailing list