title: Send text string via TCP?
body: <p>I just read and tested code of <a href="http://codeincodeblock.blogspot.com/2011/11/tcp-client-and-server-sample-example.html" rel="nofollow noreferrer">this</a> great article in order to understand TCP Client and Server.</p>
  
  <p>Now I need to do (I hope) really simple thing <strong>I need to send some string from TCP Client To TCP Server.</strong></p>
  
  <blockquote>
    <p>The string is serialized object and it is a XML in fact.</p>
  </blockquote>
  
  <p>What I don't understand where I have to include this code in TCP Client and also in the TCP server.</p>
  
  <p>TCP Client:</p>
  
  <pre><code>static void Main(string[] args)
      {
  
          while (true)
          {
              String server = "192.168.2.175"; // args[0]; // Server name or IP address
  
              // Convert input String to bytes
              byte[] byteBuffer = Encoding.ASCII.GetBytes("1024"); // Encoding.ASCII.GetBytes(args[1]);
  
              // Use port argument if supplied, otherwise default to 8080
              int servPort = 1311;  // (args.Length == 3) ? Int32.Parse(args[2]) : 8080;//7 ;
  
              TcpClient client = null;
              NetworkStream netStream = null;
  
              try
              {
                  // Create socket that is connected to server on specified port
                  client = new TcpClient(server, servPort);
  
                  Console.WriteLine("Connected to server... sending echo string");
  
                  netStream = client.GetStream();
  
                  // Send the encoded string to the server
                  netStream.Write(byteBuffer, 0, byteBuffer.Length);
  
                  Console.WriteLine("Sent {0} bytes to server...", byteBuffer.Length);
  
                  int totalBytesRcvd = 0; // Total bytes received so far
                  int bytesRcvd = 0; // Bytes received in last read
  
                  // Receive the same string back from the server
                  while (totalBytesRcvd &lt; byteBuffer.Length)
                  {
                      if ((bytesRcvd = netStream.Read(byteBuffer, totalBytesRcvd,
                      byteBuffer.Length - totalBytesRcvd)) == 0)
                      {
                          Console.WriteLine("Connection closed prematurely.");
                          break;
                      }
                      totalBytesRcvd += bytesRcvd;
                  }
                  Console.WriteLine("Received {0} bytes from server: {1}", totalBytesRcvd,
                  Encoding.ASCII.GetString(byteBuffer, 0, totalBytesRcvd));
  
              }
              catch (Exception ex)
              {
                  // http://stackoverflow.com/questions/2972600/no-connection-could-be-made-because-the-target-machine-actively-refused-it
                  Console.WriteLine(ex.Message);
              }
              finally
              {
                  if (netStream != null)
                      netStream.Close();
                  if (client != null)
                      client.Close();
              }
              Thread.Sleep(1000);
          }
  
      }
  </code></pre>
  
  <p><strong>TCP Server</strong></p>
  
  <pre><code>class Program
  {
  
      private const int BUFSIZE = 32; // Size of receive buffer
  
      static void Main(string[] args)
      {
  
  
          int servPort = 1311; // (args.Length == 1) ? Int32.Parse(args[0]) : 8080;
  
          TcpListener listener = null;
  
          try
          {
              // Create a TCPListener to accept client connections
              listener = new TcpListener(IPAddress.Any, servPort);
              listener.Start();
          }
          catch (SocketException se)
          {
              // IPAddress.Any
              Console.WriteLine(se.ErrorCode + ": " + se.Message);
              //Console.ReadKey();
              Environment.Exit(se.ErrorCode);
  
          }
  
          byte[] rcvBuffer = new byte[BUFSIZE]; // Receive buffer
          int bytesRcvd; // Received byte count
          for (; ; )
          { // Run forever, accepting and servicing connections
              // Console.WriteLine(IPAddress.Any);
              TcpClient client = null;
              NetworkStream netStream = null;
              //Console.WriteLine(IPAddress.None);
  
              try
              {
                  client = listener.AcceptTcpClient(); // Get client connection
                  netStream = client.GetStream();
                  Console.Write("Handling client - ");
  
                  // Receive until client closes connection, indicated by 0 return value
                  int totalBytesEchoed = 0;
                  while ((bytesRcvd = netStream.Read(rcvBuffer, 0, rcvBuffer.Length)) &gt; 0)
                  {
                      netStream.Write(rcvBuffer, 0, bytesRcvd);
                      totalBytesEchoed += bytesRcvd;
                  }
                  Console.WriteLine("echoed {0} bytes.", totalBytesEchoed);
  
                  // Close the stream and socket. We are done with this client!
                  netStream.Close();
                  client.Close();
  
              }
              catch (Exception e)
              {
                  Console.WriteLine(e.Message);
                  netStream.Close();
              }
          }
      }
  }
  </code></pre>