PDA

Ver la Versión Completa : Sock server + hilo


Enan0
24-11-2004, 16:53:18
Hola Buenos dias a todos:
Quiero hacer una aplicacion, que consta de un Server sock que recibe y almacene unos datos en una base de datos, el control que usaria es el IdTCPServer. en una aplicacion de servicio.
hasta aqui ningun problema...


EL PROBLEMA EN CUESTION......

Quiero que maneje hilos, de modo que pueda soportar varias conexiones "simultaneas".. alguna idea de como tengo que hacer o donde preguntar o buscar?, para empezar porque nunca utilice hilos.. Gracais!!

athlontado
25-11-2004, 11:27:09
Todos los componentes servidor de la paleta Indy soportan hilos.
Cada vez que se establece una conexión con un cliente, se crea un hilo para atender las peticiones realizadas en su conexión asociada. De modo que, cuando un cliente envía un command, se ejecuta el método asociado a ese command en el servidor, dentro del hilo asociado a la conexión establecida por ese cliente. Los componentes Indy gestionan los hilos de forma transparente al programador, pero siempre permitiendo que éste pueda tomar el control sobre dicha gestión de los hilos.

Enan0
25-11-2004, 20:53:47
Cada vez que se establece una conexión con un cliente, se crea un hilo para atender las peticiones realizadas en su conexión asociada. De modo que, cuando un cliente envía un command, se ejecuta el método asociado a ese command en el servidor, dentro del hilo asociado a la conexión establecida por ese cliente. Los componentes Indy gestionan los hilos de forma transparente al programador, pero siempre permitiendo que éste pueda tomar el control sobre dicha gestión de los hilos.
Gracias por la info.. algo de eso ya habia leido.. el tema es que no se como hacer el seguimiento de ese hilo que se genera!..
el tema es que no e encontrado info.. y en el ejemplo de los Indy.. no esta claro.. lo que hace!, pero bueno.. sigo buscando info..

GRacias igual

athlontado
26-11-2004, 09:36:05
No me debí de explicar claramente.

La creación de los hilos asociados a cada nueva conexión de los clientes, es automática. Los crea el propio objeto que realiza la función de servidor, cada vez que se conecta un cliente, y los destruye cuando los clientes se desconectan.

Otra cosa es que Indy te dé la opción de controlar esos hilos, pero tú no debes ni crear ni destruir hilos asociados a una conexión. Puedes crear hilos, si los necesitas, para otras tareas, partiendo de TThread, pero nada que ver con los relacionados con las conexiones entre componentes Indy.

Espero haberte aclarado algo más.

Enan0
26-11-2004, 14:25:11
bien, he visto lo que decis., cada vez que realizo una nueva conexion manteniedo la anterior activa, me genera un nuevo hilo, ahora lo que yo quiero hacer. es que cuando se conecte y recibo el mensaje haga un insert de una base de datos (insert updte o lo que sea) tendria que hacerlo con la llamda al syncronize (creo que asi se escribe estoy lejos del delphi) y pasado como parametro la funcion que quiero que ejecute para realizar dichos comandas??...

athlontado
26-11-2004, 16:14:55
Puedes hacerlo perfectamente con el evento OnConnect de IdTCPServer.

AThread.Synchronize(), sólo es necesario si los componentes que usas para acceder a la base de datos no son ThreadSafe (los FIBPlus, por ejemplo, sí lo son).

Enan0
26-11-2004, 17:16:26
Gracias chabon!!!. voy a proabr con el Synchronize(), ya que uso siempre los componetes de ADo. despues te cuento como me fue!1 igualmente miles de gracias!!

dekae
03-09-2005, 23:07:19
Otra cosa es que Indy te dé la opción de controlar esos hilos, pero tú no debes ni crear ni destruir hilos asociados a una conexión. Puedes crear hilos, si los necesitas, para otras tareas, partiendo de TThread, pero nada que ver con los relacionados con las conexiones entre componentes Indy.

Espero haberte aclarado algo más.

Hola athlontado, podrías ayudarme con eso que mencionaste sobre TThread en el servidor. Yo necesito que aparte de hacerme ese hilo automático para cada cliente tener otro que lo usaría como chat, la cosa es que he creado mi thread pero no se donde colocarlo de tal manera que esté reconocido como parte del servidor para que también pueda recibir y mandar el texto.
Gracias