dovier_antonio escribiste:Ante todo muchas gracias por su respuesta...
El hecho que Net::Telnet haga conexiones remotas con otra máquina (mantener diálogos) ¿no lo hace más lento que si establecieramos las comuinicaciones con IO::Socket?
Saludos,
Dovier
En realidad no es que sea mas lento o mas rápido, es lo mismo, a fin de cuentas si tu quieres implementar una conexión remota por medio del protocolo Telnet tendrás que implementar la comunicación establecida por el RFC854, que a fin de cuentas es lo que implementa Net::Telnet. Sin embargo, el manejo de sockets en Perl no solo está adjudicado a IO::Socket, obviamente a mas "bajo" nivel se encuentra el módulo Socket, el cual hace uso directo de la interfaz en XS sobre los BSD sockets en C, y con este está implementado IO::Socket.
IO::Socket citando a Lincoln Stein, puede ser en ocasiones mas lento que Socket directamente, ya que una implementación orientada a Objetos siempre genera mas "overhead" que una implementación estructurada. Todo lo anterior depende de que tipo de aplicación se vaya a trabajar. Es como la comparación entre aplicaciones Multifork vs. Multithread vs. Multiplexed. ( este es otro tema aparte, es solo una comparación ).
explorer39 escribiste:Se supone que con IO::Socket también vas a mantener diálogos con otra máquina (salvo que te vayas a conectar a un socket de la misma máquina).
Yo creo que al final depende de lo quieras hacer.
En situaciones normales... yo siempre intento programar usando estos módulos en el siguiente orden:
IO::All
Poe::Component::Client::Telnet y
Poe::Component::Server::Telnet
IO::Socket
No solo IO::Socket mantiene un diálogo, cualquier implementación de TCP/IP lo hace por ser un protocolo orientado a conexión.
Las recomendaciones que haces son buenas, aunque IO::All necesita de MUCHOS módulos para funcionar ya que es una abstracción de muy alto nivel sobre cualquier funcionalidad de IO que se pueda trabajar en Perl. En el caso de POE es una excelente solución si lo que quieres es un servidor multitareas y que sea 100% cooperativo.
Y la última pues, ya expuse el caso sobre IO::Socket.
Saludos,