title: Java sockets: multiple client threads on same port on same machine?
body: <p>I am new to Socket programming in Java and was trying to understand if the below code is not a wrong thing to do. My question is:</p>
  
  <p>Can I have multiple clients on each thread trying to connect to a server instance in the same program and expect the server to read and write data with isolation between clients"</p>
  
  <pre><code>public class Client extends Thread
  {
      ...
      void run()
      {
          Socket socket = new Socket("localhost", 1234);
          doIO(socket);  
      }
  }
  
  public class Server extends Thread
  {
      ...
      void run()
      {
          // serverSocket on "localhost", 1234
          Socket clientSock = serverSocket.accept();
          executor.execute(new ClientWorker(clientSock));
      }
  }
  </code></pre>
  
  <p>Now can I have multiple Client instances on different threads trying to connect on the same port of the current machine?</p>
  
  <p>For example,</p>
  
  <pre><code>   Server s = new Server("localhost", 1234);
     s.start();
     Client[] c = new Client[10];
     for (int i = 0; i &lt; c.length; ++i)
     {
          c.start();
     }
  </code></pre>