title: Server refuses to accept requests from clients
body: <p>This is a program to search for strings from a file. The string required by the client is given from the client side, in my case, using telnet. The program I have written is a server side one. It accepts multiple clients.
  But, the problems I am unable rectify are- </p>
  
  <ul>
  <li>It doesn't check for strings from the file. </li>
  <li>As soon as the client gets connected, the client cannot type in the strings they want to search in that particular file.</li>
  <li>It doesn't send the reply back (i.e. If the string is present in the file or not) to the client. Its only shown on the server side.</li>
  </ul>
  
  <p>How do I proceed further? Could someone tell me where am I going wrong? Could someone please help me out with the code?
  This is my try at the program..</p>
  
  <pre><code>class Program
  {
  
      static void Main(string[] args)
      {
          IPAddress ipad = IPAddress.Parse("192.168.0.181");
          TcpListener serversocket = new TcpListener(ipad, 8888);
          TcpClient clientsocket = default(TcpClient);
          Byte[] bytes = new Byte[256];
  
          serversocket.Start();
  
          Console.WriteLine("&gt;&gt; Server Started");
          while(true)
          {
              clientsocket = serversocket.AcceptTcpClient();
              Console.WriteLine("Accepted Connection From Client");
  
              LineMatcher lm = new LineMatcher(clientsocket);
              Thread thread = new Thread(new ThreadStart(lm.Run));
              thread.Start();
              Console.WriteLine("Client connected");
          }
  
  
          Console.WriteLine(" &gt;&gt; exit");
          Console.ReadLine();
          clientsocket.Close();
          serversocket.Stop();
  
      }
  }
  
  
  public class LineMatcher //I've jumbled it up here. Don't know what exactly to do..
  {
       public string fileName = "c:/myfile2.txt";
       private TcpClient _client;
  
       public LineMatcher(TcpClient client)
       {
           _client = client;
       }
  
       public void Run()
       {
           try
           {
                StreamReader sr = new StreamReader("c:/myfile2.txt");
                using (var reader = new StreamReader(_client.GetStream()))
                {
                    string line ="";
                    int lineNumber = 0;
                    while (null != (line = sr.ReadLine()))
                           {
                               lineNumber += 1;
                               byte[] data = new byte[1024];
                               NetworkStream stream = _client.GetStream();
                               //if (line.Equals(line))
                               for (int ct = stream.Read(data,0, data.Length-1); 0 &lt; ct; ct = stream.Read(data,0,data.Length-1))
  
                                   line += Encoding.ASCII.GetString(data, 0, ct);
                               line = line.Trim();
  
                               {
                                   lineNumber.ToString();
  
                                   data = Encoding.ASCII.GetBytes(line);
                                   _client.Client.Send(data, data.Length, SocketFlags.None);
                                   Console.WriteLine("Line {0} matches {1}", lineNumber, line);
                               }
                           }
               }
           }
           catch (Exception ex)
           {
               Console.Error.WriteLine(ex.ToString());
           }
           Console.WriteLine("Closing client");
           _client.Close();
       }
   }
  </code></pre>