Problemas ao lidar com Arrays de Bytes em UDP, comparação entre eles

0 respostas
B

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:
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();
    }
}
Servidor:
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();
        }
    }
}
Criado 1 de dezembro de 2011
Respostas 0
Participantes 1