ComoMantenerLosValoresDeSocket.Connections Iguales

Estoy trabajo con estos componentes de delphi:
Serversocket
Clientsocket
Existe un solo servidor y muchos clientes que se conectan a el, y a cada cliente que se conecta le asigno un numero de cliente que representara el socket conectado.
Por ejemplo:
0 al primer cliente que se conecta
1 al segundo cliente que se conecta
2 al tercero cliente que se conecta
3 al cuarto cliente que se conecta
Cuando envío datos a un cliente especifico, lo hago de la siguiente manera:
serversocket.Socket.Connections[numsocket].SendText('datos');
La variable numsocket indica el numero de cliente. Entonces si quiero enviar datos al cliente 0, la variable numsocket toma el valor 0, pero el problema es cuando un cliente se desconecta, por ejemplo: si cliente 0 se desconecta, y ahora quiero enviar datos al cliente 1, numsocket le asigno 1.PERO NO FUNCIONA,
porque cuando un cliente se desconecta los valores de Connections
cambian, y cuando numnsocket le asigno 1 y envío datos, en realidad estoy enviando datos al tercer cliente.
Quiero saber como puedo mantener los valores de Connections de socket iguales y que no cambien cuando los clientes se desconecten.
La solución de actualizar los valores de Numsocket, no me es rentable por que estoy trabajando con más de 100 clientes que se conectan y desconectan a cada segundo. Y el programa se torna demasiado lento.

2 respuestas

Respuesta
1
El valor que estas tomando es un indcide de conexiones por lo que siempre vas a tener el mismo problema ya que no se puede mantener el número, lo que puedes hacer mantener un lista con el número de código de la estación y luego que esta sea consultada a la hora de querer enviar el mensaje a alguien.
Yo lo que hice en una oportunidad fue reconocer a los clientes bajo el número IP en una lista y me trabajaba excelente.
Espero poder haber sido claro y de ayuda para ti.
Respuesta
1
Que tal me imagino que estas usando delphi5 o menor... bueno mira he trabajado muy poco con estas aplicaciones... pero al parecer no hay otra forma de dejar de alguna manera activo un cliente ya que automáticamente al desconectarse la conexiones de refrescan por lo que te cambia de id a las otras maquinas que están activas... ok
Mira en Delphi 7 estos componentes vienen modificados, estoy mirando un ejemplo que trae y la conexión la hace a través del IP entonces creo que esto resolvería tu problema aunque no mucho ya que estas usando delphi 5, ahora bien ya que tu estas más familiarizado con estos componentes, busca a ver si tienen alguna propiedad donde en ves de hacer referencia al 0,1,2,3... haga referencia al ip, de no ser así no creo que haya otra manera, de cualquier forma estaré investigando a ver si te encuentro algo... ok saludos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas