Como Gerar BroadCast em Java

4 respostas
E

Gostaria de Gerar Broadcast a partir de um Servidor
e receber a menssagem desse BroadCast em todos os clientes interessados (que estejam executando o cliente)

li varios topicos sobre sockets , e datagramas, mas admito que nao entendi a diferença de comportamente servidor/cliente

se pudessem postar alguns exemplos de broadcast, se possiveis comentados.

desde ja obrigado.

Rafael Bis Ferreira
Bacharelado em Sistemas de Informação
IFES
4º Periodo

4 Respostas

V

Não tem muita diferença. Toda mensagem que você envia para um endereço de broadcast ou multicast será recebida por todos que escutarem naquele endereço.
Como o protocolo UDP não é orientado a conexão, não existe necessidade de um servidor para redistribuir essa mensagem.

Dê uma olhada na classe DatagramSocket, do java.

J

só complementando…

vc precisa saber qual é o endereço de broadcast, normalmente é o ultimo endereço valido:

exemplo:

Address:   192.168.0.1           11000000.10101000.00000000 .00000001
Netmask:   255.255.255.0 = 24    11111111.11111111.11111111 .00000000
Wildcard:  0.0.0.255             00000000.00000000.00000000 .11111111
=>
Network:   192.168.0.0/24        11000000.10101000.00000000 .00000000 (Class C)
Broadcast: 192.168.0.255         11000000.10101000.00000000 .11111111
HostMin:   192.168.0.1           11000000.10101000.00000000 .00000001
HostMax:   192.168.0.254         11000000.10101000.00000000 .11111110
Hosts/Net: 254                   (Private Internet)

nesta configuração o endereço de broadcast é :

Broadcast: 192.168.0.255         11000000.10101000.00000000 .11111111

tudo que vc enviar para o endereço acima sera recebidos por todas as 254 maquinas.

agora isso muda muito pois o administrador pode dividir estes endereços em varias redes e ai vc tem que obter com ele os endereços de broadcast da rede onde vc esta.

segue link de calculadora ip: http://jodies.de/ipcalc

sds

j.silvestre

E

inicialmente eu tenho q modelar para que meu algoritmo fassa por si so (ou seja descubra sosinho (por codigo) o Ip da maquina atual e qual seu endereço de broadcast, fik complicado entao o uso de qualquer coisa explicita assim, existe algum meio em java de descobrir o endereço de broadcast, assim como o de encontrar o IP?

J

par descobrir o ip atual da sua maquina tem a rotina abaixo, diga de passagem que eu peguei no guj em algum lugar.

try{
      InetAddress end = InetAddress.getLocalHost();
      String host=end.getHostName();
      String  endereco = end.getHostAddress();
      System.out.println("Host : " + host + "IP :" + endereco);
     
    }
    catch(UnknownHostException uhex){
     System.out.println("Não foi possivel obter endereço IP");

    }

agora para descobrir o endereço de broadcast da rede não sei se o java já tem essa classe pronta.

para vc descobrir o endereço de broadcast vc tem que pegar o endereço ip ea mascara de rede fazer operações AND então vc consegue obter o primeiro e o ultimo ip valido sendo que oultimo ip valido é o endereço de broadcast. o

sds

j.silvestre

Criado 6 de junho de 2011
Ultima resposta 7 de jun. de 2011
Respostas 4
Participantes 3