Eventos de poll

Eventos de poll

de Miguel Angel Mendiola Pereira -
Número de respuestas: 6

Buenas,

Si quisiera tener un Cliente, que acepta comandos de consola con telnet, y acepta pedidos de otro Cliente, es posible que el vector de eventos del poll, necesite tener tamaño 4? O sea, las primeras 2 celdas (una por cada puerto), aceptando nuevas conexiones (de telnet o de cliente), y luego las celdas 3 y 4 aceptando los envíos de la consola y los pedidos de otro cliente respectivamente.

 

En respuesta a Miguel Angel Mendiola Pereira

Re: Eventos de poll

de Santiago Sanchez Malvarez -

Por lo que tengo entendido tendrías 2 file descriptors para empezar, con los sockets donde escuchás nuevas conexiones. Cada conexión que aceptás abre un socket nuevo, que lo agregás al vector del poll().

En respuesta a Santiago Sanchez Malvarez

Re: Eventos de poll

de Pablo Nelson Melo Borba -

Entiendo lo que decis, pero como diferencias si el nuevo socket agregado fue aceptado por el socket que escucha la consola o por el que escucha clientes? Estoy entendiendo algo mal?

En respuesta a Pablo Nelson Melo Borba

Re: Eventos de poll

de Juan Pablo Sierra Ansuas -

Cuando lo tengas funcionando te vas a dar cuenta que es una pavada. Básicamente la idea es que cuando abrís un socket te guardás el identificador ( que es un int ), lo agregas al arreglo de sockets a pollear y se lo tirás al poll para que te avise. Y luego cuando el poll te dice "pá, ocurrió algo" vos te preguntás ¿en donde?


Pero el poll no te dice directamente "mirá, en ESTE socket pasó algo", sino que vos tenés que recorrer el arreglo ese de pollfd preguntando en cada caso "che, ¿tuviste algún evento?".

Te sugiero que te estudies la estructura del pollfd para ver si te queda más claro.

Si no tenés idea de lo que es un arreglo de pollfd te sugiero que busques en internet que hay buena data de eso.

En respuesta a Juan Pablo Sierra Ansuas

Re: Eventos de poll

de Alejandro Agustin Tosi German -

A nosotros nos pasa que el poll detecta el pedido de conexión del telnet, y después del accept se crea la conexión lo agregamos al el array del poll. En este momento actualizamos el .events en el lugar correspondiendte con POLLIN para que el poll detecte el mensaje que se esté por enviar vía telnet, pero cuando queremos enviar algo el poll nunca se destraba y queda en un loop sin hacer nada.
Alguna idea? Gracias.

En respuesta a Alejandro Agustin Tosi German

Re: Eventos de poll

de Cristian Andres Bauza Silva -

Hola, no entendi algo,

Como nunca se destraba y queda en un loop? 

Queda trancado en el poll? o sea, cuando debuagueas no te deja avanzar cuando llegas al pool?

Si es eso, acordate del evento pollout, cuando tenes algo para enviar,

tenes que decirle que te avise si se puede enviar. Si solo le seteas Pollin, 

solo se va a destrancar cuando halla algo para leer.

 

Saludos!