Galera, estou fazendo um simples programa de conexão entre um cliente um servidor para testes.
O Cliente envia ou a String com valor “a”, “ab” ou “abc”, digitado no teclado.
O Servidor analisa o conteúdo da String e exibe uma resposta no console referente a qual a String.
Porém, como utilizo UDP, devo disponibilizar um array de bytes para receber o conteúdo do datagrama. Porém, o servidor só reconhece certinho o valor do String quando o
numero de bytes que eu envio é EXATAMENTE igual ao numero de bytes disponibilizado. Dessa forma, como disponibilizei um array de 3 bytes, ele só acaba reconhecendo quando envio a String “abc”, que também tem 3 bytes.
Alguém sabe como contorno isso para o servidor reconhecer as 3 opções de Strings com sucesso?
Obrigado a quem puder ajudar!
Cliente:
[code]public class ClienteOpcoes {
public static void main(String args[]) throws SocketException, IOException{
Scanner s=new Scanner(System.in);
String opcao;
System.out.println("Digite a opcao 'a', 'ab' ou 'abc':");
opcao=s.nextLine();
DatagramSocket ds = new DatagramSocket(2001);
byte [] dados = opcao.getBytes();
DatagramPacket dp = new DatagramPacket(dados, dados.length, InetAddress.getByName("localhost"),2000);
ds.send(dp);
System.out.println("Enviado! Confira a resposta do servidor");
ds.close();
}
}[/code]
Servidor:
[code]public class ServidorOpcoes {
public static void main (String args[]) throws SocketException, IOException{
while (true){
DatagramSocket ds = new DatagramSocket(2000);
byte dados[] = new byte[3]; //o vetor que armazena os dados do datagama
DatagramPacket dp = new DatagramPacket(dados, dados.length);
System.out.println("‘Servidor Opcoes’ aguardando dados");
ds.receive(dp);
System.out.println("Conteudo recebido: "+new String(dp.getData()));
if (new String(dp.getData()).equals("a")){
System.out.println("o dado recebido eh 'a', DEU CERTO");
}else if((new String(dp.getData())).equals("ab")){
System.out.println("o dado recebido eh 'ab', DEU CERTO");
}else if((new String(dp.getData())).equals("abc")){
System.out.println("o dado recebido eh 'abc', DEU CERTO");
}else{
System.out.println("DEU ERRADO, dia de sorte!");
}
ds.close();
}
}
}[/code]