Hinweis: Das Forum wird geschlossen! Neue Registrierungen sind nicht mehr möglich!

 Zurück zu Pro-Linux   Foren-Übersicht   FAQ     Suchen    Mitgliederliste
Netzwerkverbindung noch aktiv?

 
Neuen Beitrag schreiben   Auf Beitrag antworten    Pro-Linux Foren-Übersicht -> Programmieren - C
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
NWorker
Gast





BeitragVerfasst am: 13. Feb 2007 7:07   Titel: Netzwerkverbindung noch aktiv?

Hi,

ich habe hier eine Netzwerkverbindung zwischen zwei nichtblockierenden Sockets. Wenn ich auf einer Seite versuche etwas zu lesen ohne dass die andere was gesendet hat, so bekomme ich das mit einem Fehler EAGAIN / EINPROGRESS gemeldet.

Nur: wie erfahre ich, ob die Gegenseite nicht mehr senden kann weil sie die Verbindung bereits geschlossen hat? An Hand dessen dass keine Daten mehr kommen kann ich es nicht feststellen (und eine Lösung auf Protokollebene bei der ich einfach Nachfrage ob die Gegenseite noch am Leben ist, ist nicht realisierber).

NWorker
 

Janka



Anmeldungsdatum: 11.02.2006
Beiträge: 3569

BeitragVerfasst am: 13. Feb 2007 12:33   Titel:

Setz' die Socket-Option SO_KEEPALIVE, dann bekommst du ein SIGPIPE, wenn die Gegenseite weg ist. Klappt nur mit Stream-Sockets (also z.B. TCP, nicht mit UDP)

$ man setsockopt
$ man 7 socket

Janka
_________________
Ich vertonne Spam immer in /dev/dsp statt /dev/null.
Ich mag die Schreie.
 
Benutzer-Profile anzeigen Private Nachricht senden

NWorker
Gast





BeitragVerfasst am: 13. Feb 2007 18:34   Titel:

Ah das sieht gut aus - und wirft die nächste Frage auf: wie kann man die Timeoutzeit von SO_KEEPALIVE verändern? Sowie ich das sehe ist die mit ca. 2 Stunden recht lang...
 

Janka



Anmeldungsdatum: 11.02.2006
Beiträge: 3569

BeitragVerfasst am: 14. Feb 2007 10:31   Titel:

$ man tcp

Such nach

TCP_KEEPIDLE
TCP_KEEPINTVL
TCP_KEEPCNT

oder, global

/proc/sys/net/ipv4/tcp_*

Das ist aber leider Linux-spezifisch. Erwarte also nicht, so was bei BSD oder Cygwin etc. einstellen zu können.

Janka
_________________
Ich vertonne Spam immer in /dev/dsp statt /dev/null.
Ich mag die Schreie.
 
Benutzer-Profile anzeigen Private Nachricht senden

Beiträge vom vorherigen Thema anzeigen:   
     Pro-Linux Foren-Übersicht -> Programmieren - C Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehen Sie zu:  

Powered by phpBB © phpBB Group
pro_linux Theme © 2004 by Mandaxy