title: Socket Programming: Server/Clients and Thread Usage
body: <pre><code>static void Main(string[] args)
      {
          Console.Title = "Socket Server";
          Console.WriteLine("Listening for client messages");
  
          Socket serverSocket = new Socket(AddressFamily.InterNetwork,
                                           SocketType.Stream,
                                           ProtocolType.Tcp);
          IPAddress serverIp = IPAddress.Any;
          IPEndPoint serverEP = new IPEndPoint(serverIp, 8000);
  
          SocketPermission socketPermission = new SocketPermission(NetworkAccess.Accept,
                                                                   TransportType.Tcp,
                                                                   "127.0.0.1", 8000);
  
          serverSocket.Bind(serverEP);
          serverSocket.Listen(2);
  
  
          while(true)
          {
              //Socket connection = serverSocket.Accept();
  
              connection = serverSocket.Accept();
  
              Thread clientThread = new Thread(new ParameterizedThreadStart(MultiUser));           
              clientThread.Start(connection);
  
  
          }
      }
  
      public static void MultiUser(object connection)
      {
  
          byte[] serverBuffer = new byte[10025];
          string message = string.Empty;
  
          int bytes = ((Socket)connection).Receive(serverBuffer, serverBuffer.Length, 0);
          message += Encoding.ASCII.GetString(serverBuffer, 0, bytes);
          Console.WriteLine(message);
  
          TcpClient client = new TcpClient();
          client.Client = ((Socket)connection);
          IntPtr handle = client.Client.Handle;
  
  
  
      }
  </code></pre>
  
  <p>I want to write a chat program which has one server and 2 clients. The problem is that, I can not direct the message sent from the client1 to client2 via the server. How can the server distinguish threads so that it can send the received message from client1 to client2?</p>