title: Can't connect to my server when I put in my IP in Java
body: <p>Okay so I'm trying to learn Java client/server stuff, and am going through the tutorial code as follows. When I change "localhost" to my ip it stops working though. Please help.</p>
  
  <p>Edit: "127.0.0.1" seems to work too, but not my real IP.</p>
  
  <pre><code>/*
   * Copyright (c) 1995 - 2008 Sun Microsystems, Inc.  All rights reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   *   - Redistributions of source code must retain the above copyright
   *     notice, this list of conditions and the following disclaimer.
   *
   *   - Redistributions in binary form must reproduce the above copyright
   *     notice, this list of conditions and the following disclaimer in the
   *     documentation and/or other materials provided with the distribution.
   *
   *   - Neither the name of Sun Microsystems nor the names of its
   *     contributors may be used to endorse or promote products derived
   *     from this software without specific prior written permission.
   *
   * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
   * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
   * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
   * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
   * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
   * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
   * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
   * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
   * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
   * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
   * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   */ 
  
  import java.net.*;
  import java.io.*;
  
  public class KnockKnockServer {
      public static void main(String[] args) throws IOException {
  
          ServerSocket serverSocket = null;
          try {
              serverSocket = new ServerSocket(4444);
          } catch (IOException e) {
              System.err.println("Could not listen on port: 4444.");
              System.exit(1);
          }
  
          Socket clientSocket = null;
          try {
              clientSocket = serverSocket.accept();
          } catch (IOException e) {
              System.err.println("Accept failed.");
              System.exit(1);
          }
  
          PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);
          BufferedReader in = new BufferedReader(
                  new InputStreamReader(
                  clientSocket.getInputStream()));
          String inputLine, outputLine;
          KnockKnockProtocol kkp = new KnockKnockProtocol();
  
          outputLine = kkp.processInput(null);
          out.println(outputLine);
  
          while ((inputLine = in.readLine()) != null) {
               outputLine = kkp.processInput(inputLine);
               out.println(outputLine);
               if (outputLine.equals("Bye."))
                  break;
          }
          out.close();
          in.close();
          clientSocket.close();
          serverSocket.close();
      }
  }
  
  
  /*
   * Copyright (c) 1995 - 2008 Sun Microsystems, Inc.  All rights reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   *   - Redistributions of source code must retain the above copyright
   *     notice, this list of conditions and the following disclaimer.
   *
   *   - Redistributions in binary form must reproduce the above copyright
   *     notice, this list of conditions and the following disclaimer in the
   *     documentation and/or other materials provided with the distribution.
   *
   *   - Neither the name of Sun Microsystems nor the names of its
   *     contributors may be used to endorse or promote products derived
   *     from this software without specific prior written permission.
   *
   * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
   * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
   * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
   * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
   * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
   * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
   * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
   * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
   * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
   * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
   * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   */ 
  
  import java.io.*;
  import java.net.*;
  
  public class KnockKnockClient {
      public static void main(String[] args) throws IOException {
  
          Socket kkSocket = null;
          PrintWriter out = null;
          BufferedReader in = null;
  
          try {
              kkSocket = new Socket("localhost", 4444);
              out = new PrintWriter(kkSocket.getOutputStream(), true);
              in = new BufferedReader(new InputStreamReader(kkSocket.getInputStream()));
          } catch (UnknownHostException e) {
              System.err.println("Don't know about host: taranis.");
              System.exit(1);
          } catch (IOException e) {
              System.err.println("Couldn't get I/O for the connection to: taranis.");
              System.exit(1);
          }
  
          BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in));
          String fromServer;
          String fromUser;
  
          while ((fromServer = in.readLine()) != null) {
              System.out.println("Server: " + fromServer);
              if (fromServer.equals("Bye."))
                  break;
  
              fromUser = stdIn.readLine();
          if (fromUser != null) {
                  System.out.println("Client: " + fromUser);
                  out.println(fromUser);
          }
          }
  
          out.close();
          in.close();
          stdIn.close();
          kkSocket.close();
      }
  }
  </code></pre>
  
  <p>This is the error I'm getting.</p>
  
  <pre><code>java.net.ConnectException: Connection refused: connect
      at java.net.PlainSocketImpl.socketConnect(Native Method)
      at java.net.PlainSocketImpl.doConnect(Unknown Source)
      at java.net.PlainSocketImpl.connectToAddress(Unknown Source)
      at java.net.PlainSocketImpl.connect(Unknown Source)
      at java.net.SocksSocketImpl.connect(Unknown Source)
      at java.net.Socket.connect(Unknown Source)
      at java.net.Socket.connect(Unknown Source)
      at java.net.Socket.&lt;init&gt;(Unknown Source)
      at java.net.Socket.&lt;init&gt;(Unknown Source)
      at KnockKnockClient.main(KnockKnockClient.java:43)
  </code></pre>