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.
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:
Na verdade ainda não achei a solução
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:
- 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)
-
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.
-
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.