Java if/else behaving strangely

Posted by Alex on Stack Overflow See other posts from Stack Overflow or by Alex
Published on 2010-05-22T10:13:03Z Indexed on 2010/05/22 10:20 UTC
Read the original article Hit count: 179

Filed under:
|
|
|

I'm a real newbie to java, so please excuse me if this is a hopelessly straightforward problem.

I have the following from my java game server:

// Get input from the client
    DataInputStream in = new DataInputStream (server.getInputStream());
    PrintStream out = new PrintStream(server.getOutputStream());
    disconnect=false;

    while((line = in.readLine().trim()) != null && !line.equals(".") && !line.equals("") && !disconnect) {
        System.out.println("Received "+line);

      if(line.equals("h")){
          out.println("h"+EOF); // Client handshake
          System.out.println("Matched 1");

      }else if (line.equals("<policy-file-request/>")) {
          out.println("..."+EOF); // Policy file
          System.out.println(server.getInetAddress()+": Policy Request");
          disconnect=true;
          System.out.println("Matched 2");

      }else if(line.substring(0,3).equals("GET")||line.substring(0,4).equals("POST")){
          out.println("HTTP/1.0 200 OK\nServer: VirtuaRoom v0.9\nContent-Type: text/html\n\n..."); // HTML status page
          disconnect=true;
          System.out.println("Matched 3");


      } else {
          System.out.println(server.getInetAddress()+": Unknown command, client disconnected.");
          disconnect=true;
          System.out.println("Matched else");

      }

    }
    server.close();

First of all, the client sends an "h" packet, and expects the same back (handshake). However, I want it to disconnect the client when an unrecognised packet is received. For some reason, it responds fine to the handshake and HTML status request, but the else clause is never executed when there's an unknown packet.

Thanks

© Stack Overflow or respective owner

Related posts about java

Related posts about socket