Array
(
)

Trabalhando com Sockets

Fmd
   - 04 set 2004

Estou fazendo um sistema baseado em Sockets, porém não estou conseguindo enviar uma mensagem do SERVIDOR para o CLIENTE.

Quando há vários clientes conectados, como o posso saber qual número colocar no código abaixo:

#Código

Server.Socket.Connections[n].SendText(´Texto que quero´);


onde,
Server é o componente SocketServer,
n é a minha dúvida.


Nildo
   - 06 set 2004

Bom dia!

Server.Socket.Connections[ [size=18:d9d2c01090]n[/size:d9d2c01090] ].SendText(´Texto que quero´);

Cada cliente conectado a esse server tem um número de conexão, iniciando por Zero. O que você deve colocar nesse ´N´ é o número do cliente conectado. Por exemplo: Eu fui o quarto a me conectar nesse server, logo meu indice é o 3, porque uma matriz se inicia do Zero. Bom, se você quiser enviar a mensagem para TODOS os clientes conectados, basta fazer um FOR que vai de ZERO à ´Server.Socket.ConnectionCount - 1´ e trocar o ´N´ pela variável de contador deste FOR.

Espero ter ajudado


Ipc$
   - 06 set 2004

Não qual a versão do Delphi, mas na versão 6 a propriedade ConnectionCount não existe.
O que existe é a propriedade ActiveConnections, mas ela não é muito confiável, pois se o cliente se desconecta via anormal onde é gerado o evento onClientError, a propriedade ActiveConnections não é atualizada de imediato. Meu conselho é criar um TList de conexões e atualizá-lo nos eventos onAccept, onClientDisconnect e onClientError. sempre utilizando uma TCriticalSection.


Fmd
   - 06 set 2004

OK, arrumei uma maneira de enviar a mensagem para todos, utilizando o FOR.