Galera, fiz a conexão entre dois pcs via socket.
Um tá como cliente e outro está como servidor até ai beleza.
Só que no cliente o ip e a porta do servidor estão fixos.
Gostaria de saber como faço pra listar todos os ips e a porta dos socket servers disponiveis na rede.
A resposta simples seria: procure por broadcast e/ou multicast.
Mas acho que vai dar muito trabalho dependendo da sua necessidade. Por favor, explique melhor o seu cenário. O que a sua aplicação faz exatamente? Não dá para usar um esquema de “servidor de servidores” (tipo servidor de DNS)?
E
entanglement
nilson26:
Galera, fiz a conexão entre dois pcs via socket.
Um tá como cliente e outro está como servidor até ai beleza.
Só que no cliente o ip e a porta do servidor estão fixos.
Gostaria de saber como faço pra listar todos os ips e a porta dos socket servers disponiveis na rede.
Obrigado
Se você não tentar se conectar, não dá para saber que um determinado servidor está atendendo em uma determinada porta.
Certos programas, chamados “port scanners”, tentam fazer isso - tentam se conectar em todos os IPs da rede e em todas as portas.
Se você tentar fazer isso em uma rede privada (como por exemplo dentro de sua empresa) pode ser que alguém vá ligar no seu ramal e dizer que está fazendo algo que não deve (dependendo da empresa, isso dá demissãp por justa causa).
Na Internet o pessoal tenta fazer isso direto, e é por isso que você deve sempre ter um firewall para se proteger desses caras maliciosos na Internet.
nilson26
Hum, entendi.
Bom pra ser mais explicativo. Talvez tenha uma forma mais facil de fazer.
No pc que está como servidor eu tenho um programa java que faz backups específicos e varias outras funções.
O servidor fica ouvindo e espera receber uma string conforme tal string ele executa tal função.
Todos os pcs estão conectados pela WIFI.
A idéia é que apareça no cliente algo assim.
PAULO-PC 192.168.254.3:9512
Então o cliente seleciona e se conecta.
E
entanglement
Uma forma de fazer isso é estipular um endereço de UDP multicast fixo e que o servidor deve usar para enviar mensagens que dizem qual o seu IP e porta.
Essas mensagens devem ser enviadas periodicamente (digamos uma vez cada 5 segundos). Como é multicast, será enviado na rede inteira mas não é preciso abrir uma conexão para o outro lado pegar.
O cliente tenta escutar esses pacotes, e se reconhecer um pacote desses, pode usar o endereço IP e a porta que o servidor mandou para nele se conectar.
Atenção: essa idéia do multicast pode ter problemas se seu roteador Wi-Fi bloqueia o envio de multicasts UDP.