Trabalhando com Sockets

04/09/2004

0

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:

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


onde,
[b:5ba98130c6]Server[/b:5ba98130c6] é o componente SocketServer,
[b:5ba98130c6]n[/b:5ba98130c6] é a minha dúvida.


Responder

Posts

06/09/2004

Nildo

Bom dia!

Server.Socket.Connections[ [size=18:d9d2c01090][color=red:d9d2c01090]n[/color:d9d2c01090][/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


Responder

06/09/2004

Ipc$

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.


Responder

06/09/2004

Fmd

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


Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar