🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Saber que descriptores tengo conectados

#7110
From: CountZero
Date: Sun, 30 Mar 2003 18:24
36 lines
2143 bytes
Estoy usando sockets para una miniapliaci�n P2P.

Uso un select() junto a un conjunto de
descriptores fd_set, al que voy a�adiendo los descriptores que abro i
quito los que voy cerrando.

En un momento dado deseo enviar un 'broadcast' a todos los descriptores
que tenga abiertos en un rango dado.

Para hacerlo recorro el rango comprovando con la macro FD_ISSET si el
descriptor est� siendo usado y si �s as� 'escribo' el mensaje.

El c�digo seria este:

 void send_imsg(const char *message, unsigned limit, fd_set *activos)
 {
	 int fd;

 	 for (fd=3; fd<FD_SETSIZE; fd++)
		 if (FD_ISSET(fd,activos))
			 write(fd, message, (size_t) limit);
 }

El caso es que me da un 'Broken pipe', por lo que deduzco o que hago algo
mal o el FD_ISSET no hace exactamente lo que deber�a (o creo que
deber�a hacer).

Hay otras soluciones como enmascarar al SIG_PIPE, o constru�r un
estructura din�mica pr�pia donde almacenar los descriptores en uso, pero
seguramente hay alguna forma de saber si un descriptor tiene 'oyente'
antes de escribir en �l.

�Alguien me da alguna sugerencia?

Salut
Count
Technical Details
Message-ID: <b67cos$2ddfi$1@ID-131244.news.dfncis.de>
Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!newsfeed.stanford.edu!news-spur1.maxwell.syr.edu!news.maxwell.syr.edu!newsfeed.icl.net!newsfeed.fjserv.net!feed.news.nacamar.de!fu-berlin.de!uni-berlin.de!171.red-80-36-170.pooles.rima-tde.NET!not-for-mail

Show Full Headers
Complete Article Headers
X-Google-Language: SPANISH,ASCII
X-Google-Thread: f86c8,93102dca5ff7aeed,start
X-Google-Attributes: gidf86c8,public
X-Google-ArrivalTime: 2003-03-30 10:24:30 PST
Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!newsfeed.stanford.edu!news-spur1.maxwell.syr.edu!news.maxwell.syr.edu!newsfeed.icl.net!newsfeed.fjserv.net!feed.news.nacamar.de!fu-berlin.de!uni-berlin.de!171.red-80-36-170.pooles.rima-tde.NET!not-for-mail
From: CountZero <mark@l3jane.net>
Newsgroups: es.comp.os.linux.programacion
Subject: Saber que descriptores tengo conectados
Date: Sun, 30 Mar 2003 20:24:28 +0200
Organization: l3jane.net
Lines: 36
Message-ID: <b67cos$2ddfi$1@ID-131244.news.dfncis.de>
NNTP-Posting-Host: 171.red-80-36-170.pooles.rima-tde.net (80.36.170.171)
Mime-Version: 1.0
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 8bit
X-Trace: fu-berlin.de 1049048668 2536946 80.36.170.171 (16 [131244])
X-Orig-Path: not-for-mail
User-Agent: Pan/0.11.3 (Unix)
X-Comment-To: ALL