- Establish the local end point for the socket
- Open a socket using Socket()
- Name the socket using Bind()
- Listen for incoming connections using Listen(), parameter inside the method specifies the maximu number of pending connections
- Accept client connections using Accept(), a new socket is created here but the original socket keeps listen
- Send, Receive data using Send() and Receive()
- Close Socket using Close()
Server.cs
   using System; 
   using System.Net.Sockets; 
   using System.Net; 
   using System.Text; 
   public class SocketServer 
   { 
      public static void Main(string [] args) 
      { 
         // establish the local end point for the socket 
         IPHostEntry ipHost = Dns.Resolve("localhost"); 
         IPAddress ipAddr = ipHost.AddressList[0]; 
         IPEndPoint ipEndPoint = new IPEndPoint(ipAddr, 11000); 
         // create a Tcp/Ip Socket 
         Socket sListener = new Socket(AddressFamily.InterNetwork, 
                                       SocketType.Stream, ProtocolType.Tcp); 
         // bind the socket to the local endpoint and 
         // listen to the incoming sockets 
         try 
         { 
            sListener.Bind(ipEndPoint); 
            sListener.Listen(10); 
            // Start listening for connections 
            while (true) 
            { 
               Console.WriteLine("Waiting for a connection on port {0}",ipEndPoint); 
               // program is suspended while waiting for an incoming connection 
               Socket handler = sListener.Accept(); 
               string data = null; 
               // we got the client attempting to connect 
               while(true) 
               { 
                  byte[] bytes = new byte[1024]; 
                  int bytesRec = handler.Receive(bytes); 
                  data += Encoding.ASCII.GetString(bytes, 0, bytesRec); 
                  if (data.IndexOf("<theend>") > -1) 
                  { 
                     break; 
                  } 
               } 
               // show the data on the console 
               Console.WriteLine("Text Received: {0}",data); 
               string theReply = "Thank you for those " + data.Length.ToString() 
                               + " characters..."; 
               byte[] msg = Encoding.ASCII.GetBytes(theReply); 
               handler.Send(msg); 
               handler.Shutdown(SocketShutdown.Both); 
               handler.Close(); 
            } 
         } 
         catch(Exception e) 
         { 
            Console.WriteLine(e.ToString()); 
         } 
      } // end of Main 
   } 
TCP Based Client
- Establish a remote endpoint
- Open a socket using Socket()
- Connect to the remote host using Connect
- Send, receive data using Send() and Receive()
- Close Socket using Close()
Client.cs
using System; 
using Systern.Net.Sockets; 
using Systern.Net; 
using Systern.Text; 
public class SocketClient 
{ 
   public static void Main(string [] args) 
   {
    // data buffer for incoming data 
    byte[] bytes = new byte[1024]; 
    // connect to a Remote device 
    try 
    { 
       // Establish the remote end point for the socket 
       IPHostEntry ipHost = Dns.Resolve("127.0.0.1"); 
       IPAddress ipAddr = ipHost.AddressList[0]; 
       IPEndPoint ipEndPoint = new IPEndPoint(ipAddr, 11000); 
       Socket sender = new Socket(AddressFamily.Internetwork, 
                                  SocketType.Stream, ProtocolType.Tcp); 
       // Connect the socket to the remote endpoint 
          sender.Connect(ipEndPoint); 
          Console.WriteLine("Socket connected to {0}", 
          sender.RemoteEndPoint.ToString()); 
          string theMessage = "This is a test"; 
          byte[] msg = Encoding.ASCII.GetBytes(theMessage+"<theend>"); 
          // Send the data through the socket 
          int bytesSent = sender.Send(msg); 
          // Receive the response from the remote device 
          int bytesRec = sender.Receive(bytes); 
          Console.WriteLine("The Server says : {0}", 
                            Encoding.ASCII.GetString(bytes,0, bytesRec)); 
          // Release the socket 
          sender.Shutdown(SocketShutdown.Both); 
          sender.Close(); 
    } 
    catch(Exception e) 
    { 
       Console.WriteLine("Exception: {0}", e.ToString()); 
    } 
  } 
} 
Fllowing image shows how client and server send and receive data

 
 
No comments :
Post a Comment