Export (0) Print
Expand All

IPEndPoint Class

Represents a network endpoint as an IP address and a port number.

Namespace: System.Net
Assembly: System (in system.dll)

[SerializableAttribute] 
public class IPEndPoint : EndPoint
/** @attribute SerializableAttribute() */ 
public class IPEndPoint extends EndPoint
SerializableAttribute 
public class IPEndPoint extends EndPoint

The IPEndPoint class contains the host and local or remote port information needed by an application to connect to a service on a host. By combining the host's IP address and port number of a service, the IPEndPoint class forms a connection point to a service.


// This example uses the IPEndPoint class and its members to display the home page 
// of the server selected by the user.



using System;
using System.Text;
using System.IO;
using System.Net;
using System.Net.Sockets;
using System.Text.RegularExpressions;


namespace Mssc.Services.ConnectionManagement
{
  public class TestIPEndPoint
  {

    // The getPage method gets the server's home page content by 
    // recreating the server's endpoint from the original serialized endpoint.
    // Then it creates a new socket and connects it to the endpoint.
    private static string getPage(string server, SocketAddress socketAddress)
    {
      //Set up variables and string to write to the server.
      Encoding ASCII = Encoding.ASCII;
      string Get = "GET / HTTP/1.1\r\nHost: " + server + 
        "\r\nConnection: Close\r\n\r\n";
      Byte[] ByteGet = ASCII.GetBytes(Get);
      Byte[] RecvBytes = new Byte[256];
      String strRetPage = null;

      Socket socket = null;

      // Recreate the connection endpoint from the serialized information.
      IPEndPoint endpoint = new IPEndPoint(0,0);
      IPEndPoint clonedIPEndPoint = (IPEndPoint) endpoint.Create(socketAddress);
      Console.WriteLine("clonedIPEndPoint: " + clonedIPEndPoint.ToString());

      Console.WriteLine("Press any key to continue.");
      Console.ReadLine();

      try
      {
        // Create a socket object to establish a connection with the server.
        socket = 
          new Socket(endpoint.AddressFamily, SocketType.Stream, ProtocolType.Tcp);

        // Connect to the cloned end point.
        socket.Connect(clonedIPEndPoint);
      }
      catch(SocketException e) 
      {
        Console.WriteLine("Source : " + e.Source);
        Console.WriteLine("Message : " + e.Message);
      }
      catch(Exception e)
      {
        Console.WriteLine("Source : " + e.Source);
        Console.WriteLine("Message : " + e.Message);
      }

      if (socket == null)
        return ("Connection to cloned endpoint failed");
      
      // Send request to the server.
      socket.Send(ByteGet, ByteGet.Length, 0);  
        
      // Receive the server  home page content.
      Int32 bytes = socket.Receive(RecvBytes, RecvBytes.Length, 0);
   
      // Read the first 256 bytes.
      strRetPage = "Default HTML page on " + server + ":\r\n";
      strRetPage = strRetPage + ASCII.GetString(RecvBytes, 0, bytes);

      while (bytes > 0)
      {
        bytes = socket.Receive(RecvBytes, RecvBytes.Length, 0);
        strRetPage = strRetPage + ASCII.GetString(RecvBytes, 0, bytes);
      }
      
      socket.Close();

      return strRetPage;
    }

    // The serializeEndpoint method serializes the endpoint and returns the 
    // SocketAddress containing the serialized endpoint data.
    private static SocketAddress serializeEndpoint(IPEndPoint endpoint)
    {
 
      // Serialize IPEndPoint details to a SocketAddress instance.
      SocketAddress socketAddress = endpoint.Serialize();
  
      // Display the serialized endpoint information.
      Console.WriteLine("Endpoint.Serialize() : " + socketAddress.ToString());
 
      Console.WriteLine("Socket.Family : " + socketAddress.Family);
      Console.WriteLine("Socket.Size : " + socketAddress.Size);

      Console.WriteLine("Press any key to continue.");
      Console.ReadLine();

      return socketAddress;
    }

    private static void displayEndpointInfo(IPEndPoint endpoint)
    {
      Console.WriteLine("Endpoint.Address : " + endpoint.Address);
      Console.WriteLine("Endpoint.AddressFamily : " + endpoint.AddressFamily);
      Console.WriteLine("Endpoint.Port : " + endpoint.Port);
      Console.WriteLine("Endpoint.ToString() : " + endpoint.ToString());

      Console.WriteLine("Press any key to continue.");
      Console.ReadLine();
    }

    // The serializeEndpoint method determines the server endpoint and then 
    // serializes it to obtain the related SocketAddress object.
    // Note that in the for loop a temporary socket is created to ensure that 
    // the current IP address format matches the AddressFamily type.
    // In fact, in the case of servers supporting both IPv4 and IPv6, an exception 
    // may arise if an IP address format does not match the address family type.
    private static SocketAddress getSocketAddress(string server, int port)
    {
      Socket tempSocket = null;
      IPHostEntry host = null;
      SocketAddress serializedSocketAddress = null;
    
      try
      {
        // Get the object containing Internet host information.
        host = Dns.Resolve(server);

        // Obtain the IP address from the list of IP addresses associated with the server.
        foreach(IPAddress address in host.AddressList)
        {
          IPEndPoint endpoint = new IPEndPoint(address, port);

            
          tempSocket = 
            new Socket(endpoint.AddressFamily, SocketType.Stream, ProtocolType.Tcp);

          tempSocket.Connect(endpoint);

          if(tempSocket.Connected)
          {
            // Display the endpoint information.
            displayEndpointInfo(endpoint);
            // Serialize the endpoint to obtain a SocketAddress object.
            serializedSocketAddress = serializeEndpoint(endpoint);
            break;
          }
          else
            continue;
        }

        // Close the temporary socket.
        tempSocket.Close();
      }
    
      catch(SocketException e) 
      {
        Console.WriteLine("Source : " + e.Source);
        Console.WriteLine("Message : " + e.Message);
      }
      catch(Exception e)
      {
        Console.WriteLine("Source : " + e.Source);
        Console.WriteLine("Message : " + e.Message);
      }
      return serializedSocketAddress;

    }


    // The requestServerHomePage method obtains the server's home page and returns
    // its content.
    private static string requestServerHomePage(string server, int port) 
    {
      String strRetPage = null;

      // Get a socket address using the specified server and port.
      SocketAddress socketAddress = getSocketAddress(server, port);

      if (socketAddress == null)
        strRetPage = "Connection failed";
      else 
        // Obtain the server's home page content.
        strRetPage = getPage(server, socketAddress);
     
      return strRetPage;
    }
    
    // Show to the user how to use this program when wrong input parameters are entered.
    private static void showUsage() 
    {
      Console.WriteLine("Enter the server name as follows:");
      Console.WriteLine("\tcs_ipendpoint servername");
    }

    // This is the program entry point. It allows the user to enter 
    // a server name that is used to locate its current homepage.
    public static void Main(string[] args) 
    {
      string host= null;
      int port = 80;

      // Define a regular expression to parse user's input.
      // This is a security check. It allows only
      // alphanumeric input string between 2 to 40 character long.
      Regex rex = new Regex(@"^[a-zA-Z]\w{1,39}$");

      if (args.Length < 1)
        showUsage();
      else
      {
        string message = args[0];
        if ((rex.Match(message)).Success)
        {
          host = args[0];
          // Get the specified server home_page and display its content.
          string result = requestServerHomePage(host, port); 
          Console.WriteLine(result);
        }
        else
          Console.WriteLine("Input string format not allowed.");
      }

    }
  
  }
}

// This example uses the IPEndPoint class and its members to display the 
// home page of the server selected by the user.
import System.*;
import System.Text.*;
import System.IO.*;
import System.Net.*;
import System.Net.Sockets.*;
import System.Text.RegularExpressions.*;

public class TestIPEndPoint
{
    // The GetPage method gets the server's home page content by 
    // recreating the server's endpoint from the original serialized endpoint.
    // Then it creates a new socket and connects it to the endpoint.
    private static String GetPage(String server, SocketAddress socketAddress)
    {
        //Set up variables and string to write to the server.
        Encoding ascii = Encoding.get_ASCII();
        String get = "GET / HTTP/1.1\r\nHost: " + server 
            + "\r\nConnection: Close\r\n\r\n";
        ubyte byteGet[] = ascii.GetBytes(get);
        ubyte recvBytes[] = new ubyte[256];
        String strRetPage = null;
        Socket socket = null;

        // Recreate the connection endpoint from the serialized information.
        IPEndPoint endpoint = new IPEndPoint(0, 0);
        IPEndPoint clonedIPEndPoint = 
                ((IPEndPoint)(endpoint.Create(socketAddress)));
        Console.WriteLine(("clonedIPEndPoint: " 
            + clonedIPEndPoint.ToString()));

        Console.WriteLine("Press any key to continue.");
        Console.ReadLine();
        try {
            // Create a socket object to establish a connection
            // with the server.
            socket = new Socket(endpoint.get_AddressFamily(), 
                SocketType.Stream, ProtocolType.Tcp);

            // Connect to the cloned end point.
            socket.Connect(clonedIPEndPoint);
        }
        catch (SocketException e) {
            Console.WriteLine(("Source : " + e.get_Source()));
            Console.WriteLine(("Message : " + e.get_Message()));
        }
        catch (System.Exception e) {
            Console.WriteLine(("Source : " + e.get_Source()));
            Console.WriteLine(("Message : " + e.get_Message()));
        }
        if (socket == null) {
            return "Connection to cloned endpoint failed";
        }

        // Send request to the server.
        socket.Send(byteGet, byteGet.length, (SocketFlags)0);

        // Receive the server  home page content.
        int bytes = socket.Receive(recvBytes, recvBytes.length, 
            (SocketFlags)0);

        // Read the first 256 bytes.
        strRetPage = "Default HTML page on " + server + ":\r\n";
        strRetPage = strRetPage + ascii.GetString(recvBytes, 0, bytes);
        while ((bytes > 0)) {
            bytes = socket.Receive(recvBytes, recvBytes.length, 
                (SocketFlags)0);
            strRetPage = strRetPage + ascii.GetString(recvBytes, 0, bytes);
        }

        socket.Close();
        return strRetPage;
    } //GetPage

    // The SerializeEndpoint method serializes the endpoint and returns the 
    // SocketAddress containing the serialized endpoint data.
    private static SocketAddress SerializeEndpoint(IPEndPoint endpoint)
    {
        // Serialize IPEndPoint details to a SocketAddress instance.
        SocketAddress socketAddress = endpoint.Serialize();

        // Display the serialized endpoint information.
        Console.WriteLine(("Endpoint.Serialize() : " 
            + socketAddress.ToString()));
        Console.WriteLine(("Socket.Family : " + socketAddress.get_Family()));
        Console.WriteLine(("Socket.Size : " + socketAddress.get_Size()));
        Console.WriteLine("Press any key to continue.");
        Console.ReadLine();
        return socketAddress;
    } //SerializeEndpoint

    private static void DisplayEndpointInfo(IPEndPoint endpoint)
    {
        Console.WriteLine(("Endpoint.Address : " + endpoint.get_Address()));
        Console.WriteLine(("Endpoint.AddressFamily : " 
            + endpoint.get_AddressFamily()));
        Console.WriteLine(("Endpoint.Port : " + endpoint.get_Port()));
        Console.WriteLine(("Endpoint.ToString() : " 
            + endpoint.ToString()));
        Console.WriteLine("Press any key to continue.");
        Console.ReadLine();
    } //DisplayEndpointInfo

    // The SerializeEndpoint method determines the server endpoint and then 
    // serializes it to obtain the related SocketAddress object.
    // Note that in the for loop a temporary socket is created to ensure that 
    // the current IP address format matches the AddressFamily type.
    // In fact, in the case of servers supporting both IPv4 and IPv6, 
    // an exception may arise if an IP address format does not match the 
    // address family type.
    private static SocketAddress GetSocketAddress(String server, int port)
    {
        Socket tempSocket = null;
        IPHostEntry host = null;
        SocketAddress serializedSocketAddress = null;
        try {
            // get the object containing Internet host information.
            host = Dns.Resolve(server);

            // Obtain the IP address from the list of IP addresses 
            // associated with the server.
            for (int iCtr = 0; iCtr < host.get_AddressList().length; iCtr++) {
                IPAddress address = host.get_AddressList()[iCtr];
                IPEndPoint endpoint = new IPEndPoint(address, port);
                tempSocket = new Socket(endpoint.get_AddressFamily(), 
                    SocketType.Stream, ProtocolType.Tcp);
                tempSocket.Connect(endpoint);
                if (tempSocket.get_Connected()) {
                    // Display the endpoint information.
                    DisplayEndpointInfo(endpoint);
                    // Serialize the endpoint to obtain a SocketAddress object.
                    serializedSocketAddress = SerializeEndpoint(endpoint);
                    break;    
                }
                else {
                    continue;
                }
            }

            // Close the temporary socket.
            tempSocket.Close();
        }
        catch (SocketException e) {
            Console.WriteLine(("Source : " + e.get_Source()));
            Console.WriteLine(("Message : " + e.get_Message()));
        }
        catch (System.Exception e) {
            Console.WriteLine(("Source : " + e.get_Source()));
            Console.WriteLine(("Message : " + e.get_Message()));
        }
        return serializedSocketAddress;
    } //GetSocketAddress


    // The RequestServerHomePage method obtains the server's home page and 
    // returns its content.
    private static String RequestServerHomePage(String server, int port)
    {
        String strRetPage = null;
        // Get a socket address using the specified server and port.
        SocketAddress socketAddress = GetSocketAddress(server, port);

        if (socketAddress == null) {
            strRetPage = "Connection failed";
        }            
        else {
            // Obtain the server's home page content.
            strRetPage = GetPage(server, socketAddress);
        }
        return strRetPage;
    } //RequestServerHomePage

    // Show to the user how to use this program when wrong input parameters
    // are entered.
    private static void ShowUsage()
    {
        Console.WriteLine("Enter the server name as follows:");
        Console.WriteLine("\tcs_ipendpoint servername");
    } //ShowUsage

    // This is the program entry point. It allows the user to enter 
    // a server name that is used to locate its current homepage.
    public static void main(String[] args)
    {
        String host = null;
        int port = 80;

        // Define a regular expression to parse user's input.
        // This is a security check. It allows only
        // alphanumeric input string between 2 to 40 character long.
        Regex rex = new Regex("^[a-zA-Z]\\w{1,39}$");
        if (args.length < 1) {
            ShowUsage();
        }
        else {
            String message = args[0];
            if (rex.Match(message).get_Success()) {
                host = args[0];
                // Get the specified server home_page and display its content.
                String result = RequestServerHomePage(host, port);
                Console.WriteLine(result);
            }
            else {
                Console.WriteLine("Input string format not allowed.");
            }
        }
    } //main
} //TestIPEndPoint

System.Object
   System.Net.EndPoint
    System.Net.IPEndPoint

Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see System Requirements.

.NET Framework

Supported in: 2.0, 1.1, 1.0

.NET Compact Framework

Supported in: 2.0, 1.0

Community Additions

ADD
Show:
© 2014 Microsoft