É MINHA ULTIMA PERGUNTA SOBRE SOCKETS :)

Delphi

07/06/2003

Ae Galera

Como faço para saber quando determinada máquina desconecta do socketserver. Exemplo:

Tenho 10 maquinas com IPs 192.168.1.X(onde X = de 2 a 12)
Entao sem querer o usuário distraido chuta o cabo e disconecta a maquina dele com ip (192.168.1.8).

Preciso que o software server saiba que essa maquina está offline.

Alguém??

Valeu


Kamello

Kamello

Curtidas 0

Respostas

Luizf2

Luizf2

07/06/2003

Kamello,

Se você estiver usando o ´TTCPServer´, tente o evento ´OnClientDisconnect´.

Se você estiver usando outro componente, como o ´TfndTCPServer´ da Fundamentals, você tem o evento ´OnClientRemoved´.

[]´s

Luiz Fernando


GOSTEI 0
Kamello

Kamello

07/06/2003

Eu até estou usando o ONClientDisconnect, só nao estou conseguindo identificar a maquina, consigo até dizer que uma maquina foi desconectada, mas nao estou conseguindo identificar qual

valeu

Kamello, Se você estiver usando o ´TTCPServer´, tente o evento ´OnClientDisconnect´. Se você estiver usando outro componente, como o ´TfndTCPServer´ da Fundamentals, você tem o evento ´OnClientRemoved´. []´s Luiz Fernando



GOSTEI 0
Luizf2

Luizf2

07/06/2003

Kamello,

Você já experimentou, no evento ´OnClientDisconnect´, usar a propriedade ´RemoteAcces´ ou ´RemoteHost´ da variável ´Socket´, que é passada como parâmetro?

[]´s

Luiz Fernando


GOSTEI 0
Pamploni Cadé

Pamploni Cadé

07/06/2003

Cara,

Você só conseguirá resolver este seu problema se colocar uma comunicação só para envio e recebimento de sinal. Como se faz isso?
Coloca outro ServerSocket no Servidor e outro ClientSocket no Cliente. COnfigura outra porta para esses sockets poderem se comunicar independentes. Coloca um Componente Timer e faz ele enviar um sinal para todas as máquinas conectadas por estes sockets. O sinal pode ser uma mensagem tipo ´ping´. Depois, na aplicação cliente, faça ela responder a esse sinal enviando o nome da máquina que está rodando a aplicação cliente ex: Socket.SendText(Socket.LocalHost). Guarde esses nomes em algum array ou ListBox ou Memo. Faça algo para comparar quem tá conectado com quem respondeu e exclua as conexões perdidas com o comando Socket.Connection[i].Close (onde i é a sessão correspondente a máquina que perdeu comunicação. OBS é fundamental guardar o número da sessão na hora em que a máquina se conectar e atualizar sempre que uma máquina desconectar pois para esse evento o número muda.

se for complicado demais eu estou com um código fonte de um sistema para lan house que eu fiz a venda. Neste software eu resolvi este problema assim

Bom, espero que tenha ajudado

Sem mais,

Pamploni Cadé


GOSTEI 0
POSTAR