gqferreira
(usa Ubuntu)
Enviado em 12/09/2011 - 22:10h
Gente, olhem as imagens para ver como estou pensando...
https://picasaweb.google.com/108003299509977028117/Chat
Miura, não entendi porque congestionar a rede. Se o ping-broadcast levar em cerca de alguns segundos não será nada congestionante, pelo menos o arp-scan é super rápido.
Os usuários não ficarão o tempo todo disparando broadcast, é só quando o sistema inicia, somente para listar os terminais que estão ativos na rede. Na hora de mandar as mensagens o chat já sabe para qual IP mandar. Se eu quero mandar uma mensagem para a Maria e sei que o IP dela é 192.168.0.3, já vou direto.
A questão dos meus IPs em casa serem fixos é mera coincidência, quero fazer com que o Chat funcione em LAN de IP dinâmico, ou seja, o broadcast quando inicia é necessário.
A criação de um servidor não iria mudar muito. Quando um usuário informar para o servidor que está saíndo, o servidor precisará notificar todos os clientes conectados a si do mesmo jeito. A diferença é que o servidor teria uma lista de quem está online. Da minha maneira, todos os clientes tem o IP de todos da rede (os que executam o chat)
O processo é simples (relativamente) e já fiz funcionar com o arp-scan.
1 passo: Eu entro na rede obtenho a lista de IPs ativo (que pode ser bem pequeno em relação a quantidade máxima de endereços da LAN)
2 Passo: Para os que estão ativo na rede, mando uma mensagem na porta 1392 esperando por uma resposta.
3 Passo: Quem responder eu adiciono em minha lista de contatos.
4 Passo: Quando quiser enviar uma mensagem, escolho um dos contatos da lista, escrevo o texto e envia para o IP desse contato.
Quando algum contato quiser sair, manda para cada um dos seus contatos (o que o servidor faria) uma mensagem para anunciar a saída para que esses possam remove-lo de suas listas.
A mesma coisa acontece quando ele voltar e mandar para todos os ouvintes (que respondem na porta 1392, mesma coisa que o servidor faria) perguntando se eles o entendem. Automaticamente todos os outros contatos se atualizam quando recebem essa mensagem.
OBS: Os "ping -b 192.168.0.255" é só para representar como deveria funcionar... comigo não funcionou ¬¬ bateu uma luz agora! Será que é pelo fato de as máquinas estarem com IP fixo? Eu os fixei pelo macadress no DHCP do roteador... bom, pelo menos esclareci o máximo nesse post, vou deixar todos com IP dinâmico e depois posto se deu certo.