๐Ÿš€ go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

TCP/IP: Detectar conexion ROTA

#14906
From: Jose Manuel
Date: Thu, 07 Sep 2000 10:48
34 lines
2310 bytes
Hola, estoy desarrollando un programa que funcione como servidor, al cual se
conecten los diferentes clientes para paso de mensajes.

El problema es que necesito saber CUANDO una conexion con un cliente se ha
roto, es decir, el SERVIDOR tiene que enterarse que el socket con el cliente
ya no funciona.

Una opcion seria hacer "polling".  Esto es, mandar un paquetito al cliente y
ver si la operacion de escritura me devuelve un error o no.  Pero esta
opcion es mala porque:
a) Imaginaros que tengo 200 clientes conectados, ello implica hacer 200
operaciones de escritura "inutiles".

b) Ahora imaginaros que es MUY importante saber cuanto antes que algo va
mal, pongamos... cada 5 seg.  Entonces estoy haciendo 200 operaciones de
escritura en un socket cada 5 seg.  Estoy sobrecargando la maquina.

Hay aplicaciones profesionales que detectan casi inmediatamente una rotura
de la conexion (Oracle, por ejemplo), y dudo mucho que oracle se ponga a
hacer "polling" a cada cliente, bastante tiene ya con poner orden en la base
de datos.

Me imagino que la solucion pasa por el uso de se๏ฟฝales o tocar el kernel para
que avise al proceso.

Digo esto, porque cuando el cliente se desconecta y hago un     netstat
el resultado me dice que la conexion esta en fin_wait

Por tanto el KERNEL  SABE perfectamente que la conexion esta interrumpida.

Resumiendo, hay alguna manera de que el Kernel me informe de que un socket
esta roto???

Muchas gracias, y perdon por el ladrillo.
Technical Details
Message-ID: <8p7rnh$48l$1@talia.mad.ttd.net>
Path: arc1-ca.pugleaf.net!supernews.google.com!sn-xit-02!sn-east!sn-xit-uk!supernews.com!193.162.153.122.MISMATCH!news.tele.dk!195.25.12.36!oleane.net!oleane!jussieu.fr!fu-berlin.de!newsfeed.bcn.ttd.net!news.bcn.ttd.net!news.mad.ttd.net!not-for-mail

Show Full Headers
Complete Article Headers
X-Google-Language: SPANISH,ASCII
X-Google-Thread: f86c8,782f98bbd2b2119b,start
X-Google-Attributes: gidf86c8,public
X-Google-ArrivalTime: 2000-09-07 03:52:24 PST
Path: arc1-ca.pugleaf.net!supernews.google.com!sn-xit-02!sn-east!sn-xit-uk!supernews.com!193.162.153.122.MISMATCH!news.tele.dk!195.25.12.36!oleane.net!oleane!jussieu.fr!fu-berlin.de!newsfeed.bcn.ttd.net!news.bcn.ttd.net!news.mad.ttd.net!not-for-mail
From: "Jose Manuel" <pik@latinmail.com>
Newsgroups: es.comp.os.linux.programacion
Subject: TCP/IP: Detectar conexion ROTA
Date: Thu, 7 Sep 2000 12:48:34 +0200
Organization: Telefonica Transmision de Datos
Lines: 36
Message-ID: <8p7rnh$48l$1@talia.mad.ttd.net>
NNTP-Posting-Host: anon.ts.es
X-Newsreader: Microsoft Outlook Express 4.72.2106.4
X-MimeOLE: Produced By Microsoft MimeOLE V4.72.2106.4