title: Single server/multiple clients in C#
body: <p>I am new to C# programming. So far, I have a single server/single client, but I need to turn it into a single server/multiple client. Here is my code:</p>
  
  <p><strong>TankServer</strong></p>
  
  <pre><code>     using System;
       using System.Collections.Generic;
       using System.Linq;
       using System.Text;
       using System.Threading.Tasks;
       using System.Net;
       using System.Net.Sockets;
       using System.Threading;
  
      namespace TankServer
      {
        class Program
      {
          static Socket sck;
          static Socket acc;
          static int port = 1700;
          static IPAddress ip;
          static Thread rec;
          static string name;
  
          static string GetIp()
          {
              string strHostName = System.Net.Dns.GetHostName();
              IPHostEntry ipEntry = System.Net.Dns.GetHostEntry(strHostName);
              IPAddress[] addr = ipEntry.AddressList;
              return addr[addr.Length - 1].ToString();
          }
  
  
          static void recV()
          {
              while (true)
              {
                  Thread.Sleep(500);
                  byte[] Buffer = new byte[255];
                  int rec = acc.Receive(Buffer, 0, Buffer.Length, 0);
                  Array.Resize(ref Buffer, rec);
                  Console.WriteLine(Encoding.Default.GetString(Buffer));
              }
          }
  
          static void Main(string[] args)
          {
              rec = new Thread(recV);
              Console.WriteLine("Your Local Ip is : " + GetIp());
              Console.WriteLine("Please enter yout name");
              name = Console.ReadLine();
              Console.WriteLine("Please Enter Your Host Port");
              string inputPort = Console.ReadLine();
              try { port = Convert.ToInt32(inputPort); }
              catch { port = 1700; }
  
              ip=IPAddress.Parse(GetIp());
              sck= new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
              sck.Bind(new IPEndPoint(ip, port));
              sck.Listen(0);
              acc=sck.Accept();
              rec.Start();
  
              while(true){
                  byte[] sdata=Encoding.ASCII.GetBytes("&lt;"+name+"&gt;"+Console.ReadLine());
                  acc.Send(sdata,0,sdata.Length,0);
              }
          }
      }
  }
  </code></pre>
  
  <p><strong>TankClient</strong></p>
  
  <pre><code> using System;
   using System.Collections.Generic;
   using System.Linq;
   using System.Text;
   using System.Threading.Tasks;
   using System.Net;
   using System.Net.Sockets;
   using System.Threading;
  
   namespace TankClient
   {
    class Program
    {
      static string name = "";
      static int port = 1700;
      static IPAddress ip;
      static Socket sck;
      static Thread rec;
  
      static void recV()
      {
          while (true)
          {
              Thread.Sleep(500);
              byte[] Buffer = new byte[255];
              int rec = sck.Receive(Buffer, 0, Buffer.Length, 0);
              Array.Resize(ref Buffer, rec);
              Console.WriteLine(Encoding.Default.GetString(Buffer));
          }
      }
  
      static void Main(string[] args)
      {
  
          rec = new Thread(recV);
          while(true){
          Console.WriteLine("Please enter your name");
          name = Console.ReadLine();
          Console.WriteLine("Please enter the ip of the server");
          ip = IPAddress.Parse(Console.ReadLine());
          Console.WriteLine("Please Enter The Port");
          string inputPort = Console.ReadLine();
          try { port = Convert.ToInt32(inputPort); }
          catch { port = 1700; }
  
          sck = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
          sck.Connect(new IPEndPoint(ip, port));
          rec.Start();
          byte[] conmsg = Encoding.Default.GetBytes("&lt;" + name + "&gt;" + "Connected");
          sck.Send(conmsg, 0, conmsg.Length, 0);
  
          while (sck.Connected)
          {
              byte[] sdata = Encoding.Default.GetBytes("&lt;" + name + "&gt;"+Console.ReadLine());
              sck.Send(sdata, 0, sdata.Length, 0);
          }
      }
    }
   }
    }
  </code></pre>
  
  <p>I searched on the internet, but I really don't understand how to do it.</p>