static void Main(string[] args) { // Receiving byte array byte[] bytes = new byte[1024]; try { // Create one SocketPermission for socket access restrictions SocketPermission permission = new SocketPermission( NetworkAccess.Connect, // Connection permission TransportType.Tcp, // Defines transport types "", // Gets the IP addresses SocketPermission.AllPorts // All ports ); // Ensures the code to have permission to access a Socket permission.Demand(); // Resolves a host name to an IPHostEntry instance IPHostEntry ipHost = Dns.GetHostEntry(""); // Gets first IP address associated with a localhost IPAddress ipAddr = ipHost.AddressList[0]; // Creates a network endpoint IPEndPoint ipEndPoint = new IPEndPoint(ipAddr, 6000); // Create one Socket object to setup Tcp connection Socket sender = new Socket( ipAddr.AddressFamily,// Specifies the addressing scheme SocketType.Stream, // The type of socket ProtocolType.Tcp // Specifies the protocols ); sender.NoDelay = true; // Using the Nagle algorithm // Establishes a connection to a remote host sender.Connect(ipEndPoint); Console.WriteLine("Socket connected to {0}", sender.RemoteEndPoint.ToString()); // Sending message //<Client Quit> is the sign for end of data string theMessage = "Hello World!"; byte[] msg = Encoding.Unicode.GetBytes(theMessage +"<Client Quit>"); // Sends data to a connected Socket. int bytesSend = sender.Send(msg); // Receives data from a bound Socket. int bytesRec = sender.Receive(bytes); // Converts byte array to string theMessage = Encoding.Unicode.GetString(bytes, 0, bytesRec); // Continues to read the data till data isn't available while (sender.Available > 0) { bytesRec = sender.Receive(bytes); theMessage += Encoding.Unicode.GetString(bytes, 0, bytesRec); } Console.WriteLine("The server reply: {0}", theMessage); // Disables sends and receives on a Socket. sender.Shutdown(SocketShutdown.Both); //Closes the Socket connection and releases all resources sender.Close(); } catch (Exception ex) { Console.WriteLine("Exception: {0}", ex.ToString()); } }
static void Main(string[] args) { // Creates one SocketPermission object for access restrictions SocketPermission permission = new SocketPermission( NetworkAccess.Accept, // Allowed to accept connections TransportType.Tcp, // Defines transport types "", // The IP addresses of local host SocketPermission.AllPorts // Specifies all ports ); // Listening Socket object Socket sListener = null; try { // Ensures the code to have permission to access a Socket permission.Demand(); // Resolves a host name to an IPHostEntry instance IPHostEntry ipHost = Dns.GetHostEntry(""); // Gets first IP address associated with a localhost IPAddress ipAddr = ipHost.AddressList[0]; // Creates a network endpoint IPEndPoint ipEndPoint = new IPEndPoint(ipAddr, 6000); // Create one Socket object to listen the incoming connection sListener = new Socket( ipAddr.AddressFamily, SocketType.Stream, ProtocolType.Tcp ); // Associates a Socket with a local endpoint sListener.Bind(ipEndPoint); // Places a Socket in a listening state and specifies the maximum // Length of the pending connections queue sListener.Listen(10); Console.WriteLine("Waiting for a connection on port {0}", ipEndPoint); // Begins an asynchronous operation to accept an attempt AsyncCallback aCallback = new AsyncCallback(AcceptCallback); sListener.BeginAccept(aCallback, sListener); } catch (Exception ex) { Console.WriteLine("Exception: {0}", ex.ToString()); return; } Console.WriteLine("Press the Enter key to exit ..."); Console.ReadLine(); if (sListener.Connected) { sListener.Shutdown(SocketShutdown.Receive); sListener.Close(); } }