Article View: es.comp.os.linux.programacion
Article #7110Saber que descriptores tengo conectados
From: CountZero
Date: Sun, 30 Mar 2003 18:24
Date: Sun, 30 Mar 2003 18:24
36 lines
2143 bytes
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-mailShow 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