🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Buscando una primitiva de lectura de socket no bloqueante

#13099
From: Alfredo Naime
Date: Wed, 28 Mar 2001 02:33
32 lines
2452 bytes
Saludos a todo el grupo, es primera vez que publico en este foro.
Mi nombre es Alfredo Naime, vivo en Caracas - Venezuela y estudio Lic. en
Computacion en la UCV.

Actualmente estoy desarrollando un scanner de puertos TCP/UDP usando RAW
SOCKET y PACKET SOCKET, por lo que debo lidiar con la perdida de datagramas
como consecuencia de la no confiabilidad de IP.

El problema es que, cuando ejecuto una operacion de lectura (recvfrom) sobre
el socket, el programa se queda bloqueado hasta que recibe un datagrama. Por
lo tanto si un datagrama se pierde el programa se quedara bloqueado
indefinidamente. Logicamente, deberia tener un mecanismo para cancelar la
lectura y mostrar el mensaje de "tiempo de lectura expirado" (time out)
despues de un tiempo determinado o tener una forma de saber si ha llegado un
mensaje antes de ejecutar la operacion de lectura.

Por los momentos, yo estoy atacando este problema usando la llamada fork()
para crear un proceso que realice la lectura. Pasado un tiempo y de no haber
llegado ningun datagrama, mato el proceso lector.

Agradeceria cualquier colaboracion o sugerencia al respecto.

Yo supongo que debe existir ya un codigo o funcion de lectura de socket no
bloqueante, que facilite el trabajo y consuma menos recursos o una forma de
"testear" si hay datos entrantes antes de ejecutar la operacion de lectura.

Si alguien conoce o ha trabajado antes con este tipo de herramientas, le
agradeceria cualquier informacion y espero poder retribuir su ayuda en
cualquier momento.

Gracias de antemano y saludos a todos...
Alfredo Naime.
Technical Details
Message-ID: <99rj2v$2iq6e$1@ID-81973.news.dfncis.de>
Path: arc1-ca.pugleaf.net!supernews.google.com!sn-xit-02!supernews.com!news.tele.dk!194.25.134.62!newsfeed00.sul.t-online.de!newsfeed01.sul.t-online.de!t-online.de!fu-berlin.de!uni-berlin.de!64.86.21.33!not-for-mail

Show Full Headers
Complete Article Headers
X-Google-Language: SPANISH,ASCII-7-bit
X-Google-Thread: f86c8,cfe4f18a9b910c33,start
X-Google-Attributes: gidf86c8,public
X-Google-ArrivalTime: 2001-03-28 02:43:43 PST
Path: arc1-ca.pugleaf.net!supernews.google.com!sn-xit-02!supernews.com!news.tele.dk!194.25.134.62!newsfeed00.sul.t-online.de!newsfeed01.sul.t-online.de!t-online.de!fu-berlin.de!uni-berlin.de!64.86.21.33!not-for-mail
From: "Alfredo Naime" <anaime@leon.ciens.ucv.ve>
Newsgroups: es.comp.os.linux.programacion
Subject: Buscando una primitiva de lectura de socket no bloqueante
Date: Tue, 27 Mar 2001 22:33:32 -0400
Lines: 36
Message-ID: <99rj2v$2iq6e$1@ID-81973.news.dfncis.de>
NNTP-Posting-Host: 64.86.21.33
X-Trace: fu-berlin.de 985747363 2713806 64.86.21.33 (16 [81973])
X-Newsreader: Microsoft Outlook Express 4.72.3612.1700
X-MimeOLE: Produced By Microsoft MimeOLE V4.72.3612.1700