FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
threads multihilo
Buenas, antes que nada, busque en el foro y no encontre nada por eso pregunto.
tengo un mambo en mi cabeza que me confunde mucho. Necesito hacer un server multihilo, es decir un SOCKET en el puerto 1234 espero conexiones, hasta ahi todo bien, eso lo puedo hacer, ahora cuando alguien se conecta yo tengo que delegar esa conexion a otro hilo y que el se encargue del cliente pero el hilo principal con un SOCKET en el puerto 1234 tiene que quedar libre para la espera de mas conexiones, ahora no entiendo como hacer que el hilo que maneja al cliente (el socket) me genere un puerto disponible fuera del 1234 para que permanesca la conexion con el cliente. Alguien tiene algun ejemplo de las lineas basicas para guiarme? agradeceria! Saludos Última edición por walito fecha: 13-06-2007 a las 18:40:18. |
#3
|
||||
|
||||
Cuando un cliente se conecta a ti se crea automaticamente un socket que es lo que tienes que manejar dentro del thread, tu no tienes que abrir o crear nada dentro del thread. Pero antes de meternos mas a fondo ¿que componentes estas usando? ¿Indy, TServerSocket, TTCPServer? o quizá estas utilizando solo la API.
Si estas usando componentes, estos suelen encargarse de crear el thread y de darte un socket sobre el que leer y escribir, sin que tengas que preocuparte de nada mas. Si estas usando solo la API, en el hilo de código inútil encontraras un ejemplo muy sencillo de como hacerlo: http://www.clubdelphi.com/foros/show...16&postcount=2 Y si necesitas algo mas complicado: http://www.clubdelphi.com/foros/showthread.php?t=32112 |
#4
|
||||
|
||||
Gracias por su respuestas.
Les cuento que lo estoy haciendo con lazarus, como no tiene componentes de socket instale el Lnet que anda joya, pero como no soporta el componente threads tengo que hacer mis thread para manejar las conexiones. Ahora me baje el pico, que ustedes me comentan y lo vere con mas detencion, parece interesante. Lo que estoy haciendo es en el main.pas:
Ahora lo que creo que tengo que hacer es en el onAccept:
Me imagino que ahi tendre que llamar a mi thread.create y pasarle como parametro el aSocket y mantener en el execute la conexion, no? no se si estoy errado. Gracias |
#5
|
||||
|
||||
Cita:
|
#6
|
||||
|
||||
Sabes que yo menos lo conocia, pero lo recomiendo, la verdad que me parecio mas facil q el Indy, jeje!
Bueno, yo sigo probando, si sale falcil hago un tutorialsito y lo posteo aca. Saludos y gracias |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Indy y Threads | PeLuCa | Internet | 20 | 13-01-2011 00:42:21 |
Firebird AND Threads | Abel Garcia | Firebird e Interbase | 21 | 19-03-2008 05:07:21 |
Threads zombies | Archer | Varios | 1 | 25-09-2006 19:19:38 |
uso del WaitFor() en Threads | chalitox | Varios | 7 | 06-09-2006 23:34:56 |
Threads y transacciones | anduj | Conexión con bases de datos | 5 | 12-07-2005 20:31:40 |
|