FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Dos aplicaciones usando el mismo puerto
Buenas, esto se trata más que nada de una consulta técnica (y no práctica):
Tengo un cliente ftp, totamente funcional, me conecto a un servidor ftp. Ahora con el mismo cliente, lo ejecuto y lo puedo conectar al mismo servidor o a otro usando el mismo puerto. ¿Porqué puedo hacer esto ejecutando la aplicación dos veces y con una instancia no?, lo digo porque lo he intentado en Delphi, con dos idTCPClients, y nada, sin embargo abriendolos dos veces sí. Hay un cliente FTP que sí, te da la posiblidad de conectarte a dos servidores simultaneamente. ¿Cómo lo han podido hacer?¿En que se basa esa tecnología/capacidad?¿Cómo se puede implementar? Muchísimas gracias
__________________
:) |
#2
|
||||
|
||||
A diferencia del ServerSocket, que solo puede escuchar una instancia en un puerto, el clientSocket puede ejecutarse indistintamente para conectar a un mismo puerto, obteniendo el resultado esperado.
Y esto es asi porque cada conexion del ClientSocket, el puerto saliente que utiliza (local port) no necesariamente coincide (de hecho, nunca lo hace) con el numero de puerto destino al que va a conectarse. Esto se vuelve mas claro cuando, en una maquina que tenemos algun servidor instalado (un servidor web, por ejemplo) podemos ejecutar el IE (u otro, preferiblemente) y navegar sin problemas. Sabiendo que el IE realiza peticiones al puerto 80 del webserver destino, deberia sorprendernos que no entre en conflicto con "nuestro" puerto 80, el que hemos destinado para nuestro webserver, como si hubiesen dos puertos, uno para escuchar y otro para responder (siendo un mismo puerto capaz de hacer cualquiera de estas y otras cosas). Ahora bien, la forma en que delphi, o el idTCPClient y tu aplicacion lo esta manejando, es lo que nos compete. Imagino que la asignacion (aleatoria) de los puertos que usamos de salida las hace el Sistema Operativo (he intentado hacer pruebas, y los numeros de puertos que me son asignados no siempre coinciden), asi que puedo valerme de eso para concluir, quizas erroneamente, que por cada instancia (o hilo) de tu aplicacion, puedes utilizar al menos un puerto. O sea, que haciendo tu aplicacion multihilos (multithreading) podrias obtener los resultados que dices ver en algunos clientes FTP. Espero primero, estar cerca de lo cierto, y segundo haberte aclarado algo. Suerte!
__________________
Héctor Geraldino Software Engineer |
#3
|
||||
|
||||
Pues sí, me lo has dejado clarito . Ahora me toca a mi aprender a hacer hilos.
__________________
:) |
#4
|
||||
|
||||
Si de algo te sirve:
http://www.pergolesi.demon.co.uk/prog/threads/ToC.html Esta en ingles, pero hasta ahora es lo mejorcito que he encontrado sobre multithreading en delphi.
__________________
Héctor Geraldino Software Engineer |
#5
|
||||
|
||||
Muchas gracias hector . Cuando vuelva de casa de mi novia me pondré a tudiarlo.
__________________
:) |
#6
|
||||
|
||||
En la revista Sintesis de grupo albor tienes una serie de tres artículos sobre el trabajo con threads en Delphi magnificos y en castellano
__________________
E pur si muove |
#7
|
||||
|
||||
Gracias a ti tambien, marto, por la respuesta
__________________
:) |
|
|
|