Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > API de Windows
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 13-06-2007
Avatar de walito
walito walito is offline
Miembro
 
Registrado: jun 2005
Posts: 121
Poder: 19
walito Va por buen camino
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.
Responder Con Cita
  #2  
Antiguo 13-06-2007
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Creo que el programa Pico de nuestro compañero Seoane puede darte alguna que otra idea. Revisa este hilo y este este otro.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #3  
Antiguo 13-06-2007
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
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
Responder Con Cita
  #4  
Antiguo 13-06-2007
Avatar de walito
walito walito is offline
Miembro
 
Registrado: jun 2005
Posts: 121
Poder: 19
walito Va por buen camino
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:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
   tcp.Listen(1234, LADDR_ANY);
end;

Ahora lo que creo que tengo que hacer es en el onAccept:
Código Delphi [-]
procedure TForm1.TcpAccept(aSocket: TLSocket);
begin
  //aqui codigo
end;

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
Responder Con Cita
  #5  
Antiguo 13-06-2007
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
Cita:
Empezado por walito
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.
Pues a mi me parece que vas por buen camino, aunque no conozco los componentes Lnet.
Responder Con Cita
  #6  
Antiguo 13-06-2007
Avatar de walito
walito walito is offline
Miembro
 
Registrado: jun 2005
Posts: 121
Poder: 19
walito Va por buen camino
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
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

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


La franja horaria es GMT +2. Ahora son las 22:02:10.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi