🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: es.comp.os.linux.programacion
Article #14876

Re: TCP/IP: Detectar conexion ROTA

#14876
From: Jose Manuel
Date: Fri, 15 Sep 2000 00:00
40 lines
2140 bytes
Angel Cabello escribi� en mensaje <39B7AFFB.C6052025@masterd.es>...
>Cuando un proceso que tiene abierto un socket cierra la conexion, el otro
lado
>recibe una se�al, un sigpipe.

Eso no es del todo asi.  Yo me referia a un corte de conexion.  Y cuando
digo corte me refiero a cortar el cable, apagar el ordenador por la bravas,
etc.... es decir, un fin de conexion NO ORDENADO.

 El unico problema lo tienes si un solo proceso
>esta leyendo de mas de un socket, bien porque sea multihebra o porque uses
>sockets no bloqueantes, pero seguro que alguna manera habra para distinguir
>cual es el socket que se ha cerrado. Lo mejor para un servidor medianamente
>cargado (algo que no sea ebay o yahoo) es usar un proceso padre para
recibir
>las conexiones y otro para atender cada peticion.

Ciertamente asi lo tenia hecho.  Un proceso padre dedicado a atender
conexiones y n-procesos hijos para cada una de las comunicaciones.

>Leete el Stevens y alli te aparecen 100.000 ejemplos.


Stevens leido.  No llega a tantos ejemplos pero casi.. jejejeje 8-)))

Finalmente la solucion pasa por configurar el socket como SO_KEEPALIVE y
ajustar en el Kernel los timers para la deteccion de conexion rota.

Una vez que lo entiendes es muy sencillo, pero ha costado lo suyo.  Y eso
PESE a los ingenieros de una conocidiiisima empresa de servidores de
ordenadores.  Segun ellos era imposible, la unica opcion era hacer polling a
cada extremo de la conexion.

En fin, para que mas comentarios.

Gracias por la ayuda, y gracias a Stevens por existir (tengo sus 2 conocidos
libros).

Un saludo a todos.
Technical Details
Message-ID: <8psjq0$j3e$1@talia.mad.ttd.net>
Path: arc1-ca.pugleaf.net!unknown!not-for-mail
References: <8p7rnh$48l$1@talia.mad.ttd.net> <39B7AFFB.C6052025@masterd.es>

Show Full Headers
Complete Article Headers
X-Google-Language: SPANISH,ASCII
X-Google-Thread: f86c8,782f98bbd2b2119b
X-Google-Attributes: gidf86c8,public
From: "Jose Manuel" <pik@latinmail.com>
Subject: Re: TCP/IP: Detectar conexion ROTA
Date: 2000/09/15
Message-ID: <8psjq0$j3e$1@talia.mad.ttd.net>
X-Deja-AN: 670051804
References: <8p7rnh$48l$1@talia.mad.ttd.net> <39B7AFFB.C6052025@masterd.es>
Organization: Telefonica Transmision de Datos
X-MimeOLE: Produced By Microsoft MimeOLE V4.72.2106.4
Newsgroups: es.comp.os.linux.programacion