title: Send/Receive Bytes using TCP Sockets over internet (possibly using static IP)
body: <p>I got success in sending/receiving data using TCP Sockets over LAN but I want to accomplish the same over the internet. I asked some of my friends and got the idea of using static IP. I was wondering how can I use that static IP? I mean do I need to configure port setting on the host or what?</p>
  
  <p>Below is the sample code I want to use just to give you an idea:</p>
  
  <pre><code>using System;
  using System.Net;
  using System.Net.Sockets;
  using System.Text;
  
  class MainClass
  {
     public static void Main()
     {
        IPEndPoint ip = new IPEndPoint(IPAddress.Any,9999);
        Socket socket = new Socket(AddressFamily.InterNetwork,SocketType.Stream, ProtocolType.Tcp);
  
        socket.Bind(ip);
        socket.Listen(10);
        Console.WriteLine("Waiting for a client...");
        Socket client = socket.Accept();
        IPEndPoint clientep =(IPEndPoint)client.RemoteEndPoint;
        Console.WriteLine("Connected with {0} at port {1}",clientep.Address, clientep.Port);
  
        string welcome = "Welcome";
        byte[] data = new byte[1024];
        data = Encoding.ASCII.GetBytes(welcome);
        client.Send(data, data.Length,SocketFlags.None);
  
        Console.WriteLine("Disconnected from {0}",clientep.Address);
        client.Close();
        socket.Close();
     }
  }
  </code></pre>