Sistemas Distribuídos-UDP-Socket

3 respostas Resolvido
java
L

Alguém tem um material bom ou dicas de videos que expliquem sobre como usar Socket (Em JAVA)e aplicação UDP?
tenho que fazer uma aplicação UDP , que recebe dois clientes que tirem par ou ímpar e o servidor informar o ganhador .Os números enviados pelos clientes podem ser digitados pelo usuário. O primeiro cliente a enviar o numero é o par e o segundo impar .
Não estou conseguindo fazer, e gostaria de entender mais sobre o assunto.

3 Respostas

P

Não faz. a sua duvida pode ser a duvida de outra pessoa no futuro.

se vc ja sabe como resolver, vc mesma poderia responder e marcar como resolvido.

por exemplo, aqui tem um exemplo de cliente/servidor em Java usando UDP:

L

Na verdade ainda não achei a solução

P
Solucao aceita

sério? eu postei um exemplo ai em cima, não te atende?

vejamos, vc tem essas linhas:

DatagramSocket serverSocket = new DatagramSocket(9876);
            byte[] receiveData = new byte[1024];
            byte[] sendData = new byte[1024];
            while(true)
               {
                  DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
                  serverSocket.receive(receivePacket);
...

no lugar de while(true) vc tem um loop de 2 passos ( o par e o impar ).

com udp vc não precisa fazer um accept na conexão. ele vai receber um DatagramPacket que contem informações para vc poder responder ( IP e Porta ).

o q vc precisa fazer:

  1. leia o primeiro packet ( o que deve conter um numero par )
    String input = new String( receivePacket.getData());

vc precisa converter o getData() ( array de bytes ) em um numero inteiro. é mole de converter pra string e depois converter pra inteiro

https://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html#parseInt(java.lang.String)

  1. uma vez lido vc pode guardar o numero, endereço e porta e um booleando ( ehPar ) para saber quem é quem. ai vc tem uma estrutura de dados, um objeto com 4 campos bem definidos que vc vai montar a partir do input vindo via UDP.

  2. leu um, leu outro, agora vc decide quem venceu.

somo os numeros e veja se o modulo por 2 é zero.

if( valor % 2 == 0 ) { é par } else { é impar }

pronto vc sabe quem venceu. agora pode responder quem venceu.

realmente não é obvio como se faz isso. mas se vc explorar um pouco os exemplos que existem vc vai longe.

Criado 21 de setembro de 2018
Ultima resposta 15 de out. de 2018
Respostas 3
Participantes 2