DatagramPacket Using in UDP

Nick WEI :

I am trying to use DatagramPacket in Java to communicate with server and client. My goal is : when the client says: Hello, and Server says :Hi,Nice to meet you. So I use a if condition to achive this. However,when the input is "Hello", it seems like it sikp the if condition(I already used the debug ). I wonder why this happened? It seems too weird. Can anyone help me with this problom? Any help would be appreciated! Thanks! Code : Client:

public static void main(String[] args) {
        System.out.println("This is Server");
        DatagramSocket server = null;
        byte[] container = new byte[1024];
        try {
            server = new DatagramSocket(9998);
        } catch (SocketException e) {
            e.printStackTrace();
        }
        DatagramPacket dPacket = new DatagramPacket(container, container.length);   
        try {
            while(true) {               
                server.receive(dPacket);
                byte[] datas = dPacket.getData();
                String temp = new String(datas);
                if (temp.equals("Hello")) {
                    System.out.println("Hi~!Nice to meet you!");
                }else if (temp.equals("How are you?")) {
                    System.out.println("I am good!");
                }else {
                    System.out.println("Have a good day");
                }
                if (temp.equals("exit")) {
                    break;
                }


            }
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        server.close();
    }

client:

public static void main(String[] args) {
        // TODO Auto-generated method stub
        System.out.println("This is Client");
        try {
            DatagramSocket client = new DatagramSocket(8888);
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            String input = "";
            while(!input.equals("exit")) {
                input = br.readLine();
                byte[] msg = input.getBytes();
                DatagramPacket dPacket = new DatagramPacket(msg, msg.length,new InetSocketAddress("localhost",9998));
                client.send(dPacket);
            }


            client.close();
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
shazin :

Try the following when receiving data.

byte[] datas = dPacket.getData();
String temp = new String(datas, 0, dPacket.getLength());

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=292319&siteId=1