É MINHA ULTIMA PERGUNTA SOBRE SOCKETS :)
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
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
Curtidas 0
Respostas
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
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
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
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
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
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é
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é
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