title: c# service to listen to a port
body: <p>I believe what I am looking to create is a service that listens to a specific port, and when data is sent to that port, it sends off that data to another script for processing.</p>
  
  <p>For some reason though, the service times out when I try to start it. My logs tells me <code>TcpClient client = server.AcceptTcpClient();</code> is where it is stopping (actually, it is getting stuck on 'starting' in Services).</p>
  
  <p>Since I have no experience with C#, making services, or working with servers in this manner, the code is pretty much just what I found online.</p>
  
  <p>The OnStart method looks like this.</p>
  
  <pre><code>    protected override void OnStart(string[] args)
      {
          try
          {
              TcpListener server = null;
              // Set the TcpListener on port 13000.
              Int32 port = 1234;
              IPAddress localAddr = IPAddress.Parse("127.0.0.1");
  
              // TcpListener server = new TcpListener(port);
              server = new TcpListener(localAddr, port);
  
              // Start listening for client requests.
              server.Start();
  
              // Buffer for reading data
              Byte[] bytes = new Byte[256];
              String data = null;
  
              // Enter the listening loop.
              while (true)
              {
                  // Perform a blocking call to accept requests.
                  // You could also user server.AcceptSocket() here.
                  TcpClient client = server.AcceptTcpClient();
  
                  data = null;
  
                  // Get a stream object for reading and writing
                  NetworkStream stream = client.GetStream();
  
                  int i;
  
                  // Loop to receive all the data sent by the client.
                  while ((i = stream.Read(bytes, 0, bytes.Length)) != 0)
                  {
                      // Translate data bytes to a ASCII string.
                      data = System.Text.Encoding.ASCII.GetString(bytes, 0, i);
  
                      // Process the data sent by the client.
                      data = data.ToUpper();
  
                      byte[] msg = System.Text.Encoding.ASCII.GetBytes(data);
  
                      // Send back a response.
                      stream.Write(msg, 0, msg.Length);
                  }
  
                  // Shutdown and end connection
                  client.Close();
              }
          }
          catch (SocketException e)
          {
          }
          finally
          {
          }
      }
  </code></pre>