title: to get this client server android app working. what IP address do I type in the edittext window?
body: <p>I have two android tablets that I want to send messages from the client to the server with socket programming.  I pasted the sample code to make the server and client apps and installed them on two android tablets.  both connected to wifi</p>
  
  <p>on the client app there is an edit text that i am supposed to type in an IP address in it then the button below that is called "connect phones".</p>
  
  <p>what IP address am i supposed to type in the edittext before clicking the "connect phones button"</p>
  
  <p>here is the onclick listener for the "connect phones" button</p>
  
  <pre><code>    private OnClickListener connectListener = new OnClickListener() {
  
      @Override
      public void onClick(View v) {
          if (!connected) {
              serverIpAddress = serverIp.getText().toString();
              if (!serverIpAddress.equals("")) {
                  Thread cThread = new Thread(new ClientThread());
                  cThread.start();
              }
          }
      }
  };
  </code></pre>
  
  <p>full code for both client and server apps shown below;</p>
  
  <p>client code:</p>
  
  <pre><code> package com.example.client;
  
   // import statements
  
   public class ClientActivity extends Activity {
  
  private EditText serverIp;
  
  private Button connectPhones;
  
  private String serverIpAddress = "";
  
  private boolean connected = false;
  
  private Handler handler = new Handler();
  
  @Override
  protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.client);
  
      serverIp = (EditText) findViewById(R.id.server_ip);
      connectPhones = (Button) findViewById(R.id.connect_phones);
      connectPhones.setOnClickListener(connectListener);
  }
  
  private OnClickListener connectListener = new OnClickListener() {
  
      @Override
      public void onClick(View v) {
          if (!connected) {
              serverIpAddress = serverIp.getText().toString();
              if (!serverIpAddress.equals("")) {
                  Thread cThread = new Thread(new ClientThread());
                  cThread.start();
              }
          }
      }
  };
  
  public class ClientThread implements Runnable {
  
      public void run() {
          try {
              InetAddress serverAddr = InetAddress.getByName(serverIpAddress);
              Log.d("ClientActivity", "C: Connecting...");
              Socket socket = new Socket(serverAddr, 8080);
              connected = true;
              while (connected) {
                  try {
                      Log.d("ClientActivity", "C: Sending command.");
                      PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket
                                  .getOutputStream())), true);
                          // where you issue the commands
                          out.println("Hey Server!");
                          Log.d("ClientActivity", "C: Sent.");
                  } catch (Exception e) {
                      Log.e("ClientActivity", "S: Error", e);
                  }
              }
              socket.close();
              Log.d("ClientActivity", "C: Closed.");
          } catch (Exception e) {
              Log.e("ClientActivity", "C: Error", e);
              connected = false;
          }
      }
   }
   }
  </code></pre>
  
  <p>server code;</p>
  
  <pre><code>       package com.example.server;
  
    // import statements
  
    public class ServerActivity extends Activity {
  
  private TextView serverStatus;
  
  // default ip
  // public static String SERVERIP ="10.0.2.15";
  
  // designate a port
  public static final int SERVERPORT = 8080;
  
  private Handler handler = new Handler();
  
  private ServerSocket serverSocket;
  
  @Override
  protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.server);
      serverStatus = (TextView) findViewById(R.id.server_status);
  
      SERVERIP = getLocalIpAddress();
  
      Thread fst = new Thread(new ServerThread());
      fst.start();
  }
  
      public class ServerThread implements Runnable {
  
      public void run() {
          try {
              if (SERVERIP != null) {
                  handler.post(new Runnable() {
                      @Override
                      public void run() {
                          serverStatus.setText("Listening on IP: " + SERVERIP);
                      }
                  });
                  serverSocket = new ServerSocket(SERVERPORT);
                  while (true) {
                      // listen for incoming clients
                      Socket client = serverSocket.accept();
                      handler.post(new Runnable() {
                          @Override
                          public void run() {
                              serverStatus.setText("Connected.");
                          }
                      });
  
                      try {
                          BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream()));
                          String line = null;
                          while ((line = in.readLine()) != null) {
                              Log.d("ServerActivity", line);
                              handler.post(new Runnable() {
                                  @Override
                                  public void run() {
                                      // do whatever you want to the front end
                                      // this is where you can be creative
                                  }
                              });
                          }
                          break;
                      } catch (Exception e) {
                          handler.post(new Runnable() {
                              @Override
                              public void run() {
                                  serverStatus.setText("Oops. Connection interrupted. Please reconnect your phones.");
                              }
                          });
                          e.printStackTrace();
                      }
                  }
              } else {
                  handler.post(new Runnable() {
                      @Override
                      public void run() {
                          serverStatus.setText("Couldn't detect internet connection.");
                      }
                  });
              }
          } catch (Exception e) {
              handler.post(new Runnable() {
                  @Override
                  public void run() {
                      serverStatus.setText("Error");
                  }
              });
              e.printStackTrace();
          }
      }
  }
  
  // gets the ip address of your phone's network
  private String getLocalIpAddress() {
      try {
          for (Enumeration&lt;NetworkInterface&gt; en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) {
              NetworkInterface intf = en.nextElement();
              for (Enumeration&lt;InetAddress&gt; enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements();) {
                  InetAddress inetAddress = enumIpAddr.nextElement();
                  if (!inetAddress.isLoopbackAddress()) { return inetAddress.getHostAddress().toString(); }
              }
          }
      } catch (SocketException ex) {
          Log.e("ServerActivity", ex.toString());
      }
      return null;
  }
  
  @Override
  protected void onStop() {
      super.onStop();
      try {
           // make sure you close the socket upon exiting
           serverSocket.close();
       } catch (IOException e) {
           e.printStackTrace();
       }
  }
  
   }
  </code></pre>
  
  <p>logcat errors;</p>
  
  <pre><code>01-22 18:37:40.100: E/ClientActivity(19568): C: Error
  01-22 18:37:40.100: E/ClientActivity(19568): java.net.ConnectException: failed to connect to /10.0.2.15 (port 8080): connect failed: EHOSTUNREACH (No route to host)
  01-22 18:37:40.100: E/ClientActivity(19568):    at libcore.io.IoBridge.connect(IoBridge.java:114)
  01-22 18:37:40.100: E/ClientActivity(19568):    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192)
  01-22 18:37:40.100: E/ClientActivity(19568):    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
  01-22 18:37:40.100: E/ClientActivity(19568):    at java.net.Socket.startupSocket(Socket.java:566)
  01-22 18:37:40.100: E/ClientActivity(19568):    at java.net.Socket.&lt;init&gt;(Socket.java:225)
  01-22 18:37:40.100: E/ClientActivity(19568):    at com.example.client.ClientActivity$ClientThread.run(ClientActivity.java:60)
  01-22 18:37:40.100: E/ClientActivity(19568):    at java.lang.Thread.run(Thread.java:856)
  01-22 18:37:40.100: E/ClientActivity(19568): Caused by: libcore.io.ErrnoException: connect failed: EHOSTUNREACH (No route to host)
  01-22 18:37:40.100: E/ClientActivity(19568):    at libcore.io.Posix.connect(Native Method)
  01-22 18:37:40.100: E/ClientActivity(19568):    at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:85)
  01-22 18:37:40.100: E/ClientActivity(19568):    at libcore.io.IoBridge.connectErrno(IoBridge.java:127)
  01-22 18:37:40.100: E/ClientActivity(19568):    at libcore.io.IoBridge.connect(IoBridge.java:112)
  </code></pre>