la funcion select se fija si hay un cambio de estado en un archivo
como en el paradigma unix todo se implementa con archivos (incluido los socket), el select te permite detectar si el socket tiene algo para ser leido se usa cuando no querés bloquear un hilo (ej: haciendo un accept en el server) ya que uno de los parametros es un intervalo de timeout

para ver si hay algo para leer de un socket podes hacer lo siguiente:

int socket_read (int mseg) {
 //se establece el timeout
 struct timeval tiempo;
 tiempo.tv_sec = mseg/1000;
 tiempo.tv_usec = (mseg%1000)*1000;

 //inicializacion de estructuras
 fd_set selector;
 FD_ZERO(&selector);
 FD_SET(sockfd,&selector);

 //se fija si hay algo para leer o algo enviado
 if (select(sockfd+1,&selector,0,0,&tiempo) < 0)
   return 0; //error
 return (FD_ISSET(sockfd,&selector));
}

saludos

--------------------------------------------------
From: "Leonardo Rios" <[EMAIL PROTECTED]>
Sent: Sunday, May 04, 2008 10:25 PM
To: <[email protected]>
Subject: [Prog] usando select en socket

Estoy haciendo una aplicacion en c del tipo cliente-servidor usando
las funciones send() y recv() para transmitir mensajes entre ellos.
Leyendo el libro de Inux_Network_Programming (Stevens) me tope con
esta funcion select. Este mencionaba que se relaciona con el Kernel y
la lectura y escritura de los descriptores. Entonces cuando se usaria
esta funcion.


Ademas de esto en que momento adecuado se usaria un    int
FD_ISSET(int fd, fd_set *fdset);

                         void FD_SET(int fd, fd_set *fdset);

                          void FD_ZERO(fd_set *fdset);

segun man select.


Gracias



--
/* Leonardo Rios
* rios[dot]lj[at]gmail[dot]com
*/
_______________________________________________
Lista de correo Programacion.
[email protected]
http://listas.fi.uba.ar/mailman/listinfo/programacion




No virus found in this incoming message.
Checked by AVG.
Version: 8.0.100 / Virus Database: 269.23.8/1414 - Release Date: 04/05/2008 12:31 p.m.

__________________________________________________
Correo Yahoo!
Espacio para todos tus mensajes, antivirus y antispam ¡gratis! ¡Abrí tu cuenta ya! - http://correo.yahoo.com.ar

_______________________________________________
Lista de correo Programacion.
[email protected]
http://listas.fi.uba.ar/mailman/listinfo/programacion

Responder a