IPAddress Класс

Определение

Предоставляет IP-адрес.Provides an Internet Protocol (IP) address.

public ref class IPAddress
[System.Serializable]
public class IPAddress
type IPAddress = class
Public Class IPAddress
Наследование
IPAddress
Атрибуты

Примеры

В следующем примере кода показано, как запросить сервер для получения семейств и IP-адресов, которые он поддерживает.The following code example shows how to query a server to obtain the family addresses and the IP addresses it supports.

// This program shows how to use the IPAddress class to obtain a server 
// IP addressess and related information.
#using <System.dll>

using namespace System;
using namespace System::Net;
using namespace System::Net::Sockets;
using namespace System::Text::RegularExpressions;

/**
* The IPAddresses method obtains the selected server IP address information.
* It then displays the type of address family supported by the server and its 
* IP address in standard and byte format.
**/
void IPAddresses( String^ server )
{
   try
   {
      System::Text::ASCIIEncoding^ ASCII = gcnew System::Text::ASCIIEncoding;
      
      // Get server related information.
      IPHostEntry^ heserver = Dns::GetHostEntry( server );
      
      // Loop on the AddressList
      System::Collections::IEnumerator^ myEnum = heserver->AddressList->GetEnumerator();
      while ( myEnum->MoveNext() )
      {
         IPAddress^ curAdd = safe_cast<IPAddress^>(myEnum->Current);
         
         // Display the type of address family supported by the server. If the
         // server is IPv6-enabled this value is: InterNetworkV6. If the server
         // is also IPv4-enabled there will be an additional value of InterNetwork.
         Console::WriteLine( "AddressFamily: {0}", curAdd->AddressFamily );
         
         // Display the ScopeId property in case of IPV6 addresses.
         if ( curAdd->AddressFamily.ToString() == ProtocolFamily::InterNetworkV6.ToString() )
                  Console::WriteLine( "Scope Id: {0}", curAdd->ScopeId );

         // Display the server IP address in the standard format. In 
         // IPv4 the format will be dotted-quad notation, in IPv6 it will be
         // in in colon-hexadecimal notation.
         Console::WriteLine( "Address: {0}", curAdd );
         
         // Display the server IP address in byte format.
         Console::Write( "AddressBytes: " );
         
         array<Byte>^bytes = curAdd->GetAddressBytes();
         for ( int i = 0; i < bytes->Length; i++ )
         {
            Console::Write( bytes[ i ] );

         }

         Console::WriteLine( "\r\n" );
      }
   }
   catch ( Exception^ e ) 
   {
      Console::WriteLine( "[DoResolve] Exception: {0}", e );
   }

}


// This IPAddressAdditionalInfo displays additional server address information.
void IPAddressAdditionalInfo()
{
   try
   {
      // Display the flags that show if the server supports IPv4 or IPv6
      // address schemas.
      Console::WriteLine( "\r\nSupportsIPv4: {0}", Socket::SupportsIPv4 );
      Console::WriteLine( "SupportsIPv6: {0}", Socket::SupportsIPv6 );
      if ( Socket::SupportsIPv6 )
      {
         // Display the server Any address. This IP address indicates that the server 
         // should listen for client activity on all network interfaces. 
         Console::WriteLine( "\r\nIPv6Any: {0}", IPAddress::IPv6Any );

         // Display the server loopback address. 
         Console::WriteLine( "IPv6Loopback: {0}", IPAddress::IPv6Loopback );

         // Used during autoconfiguration first phase.
         Console::WriteLine( "IPv6None: {0}", IPAddress::IPv6None );
         Console::WriteLine( "IsLoopback(IPv6Loopback): {0}", IPAddress::IsLoopback( IPAddress::IPv6Loopback ) );
      }
      Console::WriteLine( "IsLoopback(Loopback): {0}", IPAddress::IsLoopback( IPAddress::Loopback ) );
   }
   catch ( Exception^ e ) 
   {
      Console::WriteLine( "[IPAddresses] Exception: {0}", e );
   }

}

int main()
{
   array<String^>^args = Environment::GetCommandLineArgs();
   String^ server = nullptr;

   // 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 = gcnew Regex( "^[a-zA-Z]\\w{1,39}$" );
   if ( args->Length < 2 )
   {
      // If no server name is passed as an argument to this program, use the current 
      // server name as default.
      server = Dns::GetHostName();
      Console::WriteLine( "Using current host: {0}", server );
   }
   else
   {
      server = args[ 1 ];
      if (  !(rex->Match(server))->Success )
      {
         Console::WriteLine( "Input string format not allowed." );
         return  -1;
      }
   }

   // Get the list of the addresses associated with the requested server.
   IPAddresses( server );

   // Get additonal address information.
   IPAddressAdditionalInfo();
}

// This program shows how to use the IPAddress class to obtain a server 
// IP addressess and related information.

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

namespace Mssc.Services.ConnectionManagement
{

  class TestIPAddress 
  {

    /**
      * The IPAddresses method obtains the selected server IP address information.
      * It then displays the type of address family supported by the server and its 
      * IP address in standard and byte format.
      **/
    private static void IPAddresses(string server) 
    {
      try 
      {
        System.Text.ASCIIEncoding ASCII = new System.Text.ASCIIEncoding();
  
        // Get server related information.
        IPHostEntry heserver = Dns.GetHostEntry(server);

        // Loop on the AddressList
        foreach (IPAddress curAdd in heserver.AddressList) 
        {


          // Display the type of address family supported by the server. If the
          // server is IPv6-enabled this value is: InterNetworkV6. If the server
          // is also IPv4-enabled there will be an additional value of InterNetwork.
          Console.WriteLine("AddressFamily: " + curAdd.AddressFamily.ToString());
          
          // Display the ScopeId property in case of IPV6 addresses.
          if(curAdd.AddressFamily.ToString() == ProtocolFamily.InterNetworkV6.ToString())
            Console.WriteLine("Scope Id: " + curAdd.ScopeId.ToString());


          // Display the server IP address in the standard format. In 
          // IPv4 the format will be dotted-quad notation, in IPv6 it will be
          // in in colon-hexadecimal notation.
          Console.WriteLine("Address: " + curAdd.ToString());
        
          // Display the server IP address in byte format.
          Console.Write("AddressBytes: ");



          Byte[] bytes = curAdd.GetAddressBytes();
          for (int i = 0; i < bytes.Length; i++) 
          {
            Console.Write(bytes[i]);
          }                          

          Console.WriteLine("\r\n");

        }

      }
      catch (Exception e) 
      {
        Console.WriteLine("[DoResolve] Exception: " + e.ToString());
      }
    }

    // This IPAddressAdditionalInfo displays additional server address information.
    private static void IPAddressAdditionalInfo() 
    {
      try 
      {
        // Display the flags that show if the server supports IPv4 or IPv6
        // address schemas.
        Console.WriteLine("\r\nSupportsIPv4: " + Socket.SupportsIPv4);
        Console.WriteLine("SupportsIPv6: " + Socket.SupportsIPv6);

        if (Socket.SupportsIPv6)
        {
          // Display the server Any address. This IP address indicates that the server 
          // should listen for client activity on all network interfaces. 
          Console.WriteLine("\r\nIPv6Any: " + IPAddress.IPv6Any.ToString());

          // Display the server loopback address. 
          Console.WriteLine("IPv6Loopback: " + IPAddress.IPv6Loopback.ToString());
      
          // Used during autoconfiguration first phase.
          Console.WriteLine("IPv6None: " + IPAddress.IPv6None.ToString());
      
          Console.WriteLine("IsLoopback(IPv6Loopback): " + IPAddress.IsLoopback(IPAddress.IPv6Loopback));
        }
        Console.WriteLine("IsLoopback(Loopback): " + IPAddress.IsLoopback(IPAddress.Loopback));
      }
      catch (Exception e) 
      {
        Console.WriteLine("[IPAddresses] Exception: " + e.ToString());
      }
    }


    public static void Main(string[] args) 
    {
      string server = null;
    
      // 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)
      {
        // If no server name is passed as an argument to this program, use the current 
        // server name as default.
        server = Dns.GetHostName();
        Console.WriteLine("Using current host: " + server);
      }
      else
      {
        server = args[0];
        if (!(rex.Match(server)).Success)
        {
          Console.WriteLine("Input string format not allowed.");
          return;
        }
      }

      // Get the list of the addresses associated with the requested server.
      IPAddresses(server);
    
      // Get additonal address information.
      IPAddressAdditionalInfo();
    }

  }
}
' This program shows how to use the IPAddress class to obtain a server 
' IP addressess and related information.
Imports System.Net
Imports System.Net.Sockets
Imports System.Text.RegularExpressions

Namespace Mssc.Services.ConnectionManagement
  Module M_TestIPAddress

    Class TestIPAddress

      'The IPAddresses method obtains the selected server IP address information.
      'It then displays the type of address family supported by the server and 
      'its IP address in standard and byte format.
      Private Shared Sub IPAddresses(ByVal server As String)
        Try
          Dim ASCII As New System.Text.ASCIIEncoding()

          ' Get server related information.
          Dim heserver As IPHostEntry = Dns.Resolve(server)

          ' Loop on the AddressList
          Dim curAdd As IPAddress
          For Each curAdd In heserver.AddressList

            ' Display the type of address family supported by the server. If the
            ' server is IPv6-enabled this value is: InterNetworkV6. If the server
            ' is also IPv4-enabled there will be an additional value of InterNetwork.
            Console.WriteLine(("AddressFamily: " + curAdd.AddressFamily.ToString()))

            ' Display the ScopeId property in case of IPV6 addresses.
            If curAdd.AddressFamily.ToString() = ProtocolFamily.InterNetworkV6.ToString() Then
              Console.WriteLine(("Scope Id: " + curAdd.ScopeId.ToString()))
            End If

            ' Display the server IP address in the standard format. In 
            ' IPv4 the format will be dotted-quad notation, in IPv6 it will be
            ' in in colon-hexadecimal notation.
            Console.WriteLine(("Address: " + curAdd.ToString()))

            ' Display the server IP address in byte format.
            Console.Write("AddressBytes: ")



            Dim bytes As [Byte]() = curAdd.GetAddressBytes()
            Dim i As Integer
            For i = 0 To bytes.Length - 1
              Console.Write(bytes(i))
            Next i
            Console.WriteLine(ControlChars.Cr + ControlChars.Lf)
          Next curAdd 

        Catch e As Exception
          Console.WriteLine(("[DoResolve] Exception: " + e.ToString()))
        End Try
      End Sub


      ' This IPAddressAdditionalInfo displays additional server address information.
      Private Shared Sub IPAddressAdditionalInfo()
        Try
          ' Display the flags that show if the server supports IPv4 or IPv6
          ' address schemas.
          Console.WriteLine((ControlChars.Cr + ControlChars.Lf + "SupportsIPv4: " + Socket.SupportsIPv4.ToString()))
          Console.WriteLine(("SupportsIPv6: " + Socket.SupportsIPv6.ToString()))

          If Socket.SupportsIPv6 Then
            ' Display the server Any address. This IP address indicates that the server 
            ' should listen for client activity on all network interfaces. 
            Console.WriteLine((ControlChars.Cr + ControlChars.Lf + "IPv6Any: " + IPAddress.IPv6Any.ToString()))

            ' Display the server loopback address. 
            Console.WriteLine(("IPv6Loopback: " + IPAddress.IPv6Loopback.ToString()))

            ' Used during autoconfiguration first phase.
            Console.WriteLine(("IPv6None: " + IPAddress.IPv6None.ToString()))

            Console.WriteLine(("IsLoopback(IPv6Loopback): " + IPAddress.IsLoopback(IPAddress.IPv6Loopback).ToString()))
          End If
          Console.WriteLine(("IsLoopback(Loopback): " + IPAddress.IsLoopback(IPAddress.Loopback).ToString()))
        Catch e As Exception
          Console.WriteLine(("[IPAddresses] Exception: " + e.ToString()))
        End Try
      End Sub

      Public Shared Sub Main(ByVal args() As String)
        Dim server As String = Nothing

        ' 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.
        Dim rex As New Regex("^[a-zA-Z]\w{1,39}$")

        If args.Length < 1 Then
          ' If no server name is passed as an argument to this program, use the current 
          ' server name as default.
          server = Dns.GetHostName()
          Console.WriteLine(("Using current host: " + server))
        Else
          server = args(0)
          If Not rex.Match(server).Success Then
            Console.WriteLine("Input string format not allowed.")
            Return
          End If
        End If

        ' Get the list of the addresses associated with the requested server.
        IPAddresses(server)

        ' Get additonal address information.
        IPAddressAdditionalInfo()
      End Sub
    End Class
  End Module
End Namespace

Комментарии

Класс IPAddress содержит адрес компьютера в IP-сети.The IPAddress class contains the address of a computer on an IP network.

Конструкторы

IPAddress(Byte[])

Инициализирует новый экземпляр класса IPAddress с указанным адресом, заданным в виде массива Byte.Initializes a new instance of the IPAddress class with the address specified as a Byte array.

IPAddress(Byte[], Int64)

Инициализирует новый экземпляр класса IPAddress с адресом, указанным в виде массива Byte, и указанным идентификатором области.Initializes a new instance of the IPAddress class with the address specified as a Byte array and the specified scope identifier.

IPAddress(Int64)

Инициализирует новый экземпляр класса IPAddress с указанным адресом, заданным в виде массива Int64.Initializes a new instance of the IPAddress class with the address specified as an Int64.

IPAddress(ReadOnlySpan<Byte>)
IPAddress(ReadOnlySpan<Byte>, Int64)

Поля

Any

Предоставляет IP-адрес, указывающий, что сервер должен контролировать действия клиентов на всех сетевых интерфейсах.Provides an IP address that indicates that the server must listen for client activity on all network interfaces. Это поле доступно только для чтения.This field is read-only.

Broadcast

Предоставляет широковещательный IP-адрес.Provides the IP broadcast address. Это поле доступно только для чтения.This field is read-only.

IPv6Any

Метод Bind(EndPoint) использует поле IPv6Any для указания того, что экземпляр класса Socket должен контролировать действия клиентов на всех сетевых интерфейсах.The Bind(EndPoint) method uses the IPv6Any field to indicate that a Socket must listen for client activity on all network interfaces.

IPv6Loopback

Предоставляет IP-адрес замыкания на себя.Provides the IP loopback address. Это свойство доступно только для чтения.This property is read-only.

IPv6None

Предоставляет IP-адрес, указывающий, что сетевой интерфейс не должен использоваться.Provides an IP address that indicates that no network interface should be used. Это свойство доступно только для чтения.This property is read-only.

Loopback

Предоставляет IP-адрес замыкания на себя.Provides the IP loopback address. Это поле доступно только для чтения.This field is read-only.

None

Предоставляет IP-адрес, указывающий, что сетевой интерфейс не должен использоваться.Provides an IP address that indicates that no network interface should be used. Это поле доступно только для чтения.This field is read-only.

Свойства

Address

IP-адрес.An Internet Protocol (IP) address.

AddressFamily

Возвращает семейство адресов для IP-адреса.Gets the address family of the IP address.

IsIPv4MappedToIPv6

Возвращает сведения о том, является ли IP-адрес адресом IPv6, сопоставленным с IPv4.Gets whether the IP address is an IPv4-mapped IPv6 address.

IsIPv6LinkLocal

Возвращает сведения о том, является ли адрес локальным IPv6-адресом для канала связи.Gets whether the address is an IPv6 link local address.

IsIPv6Multicast

Возвращает сведения о том, является ли IPv6-адрес многоадресным глобальным адресом.Gets whether the address is an IPv6 multicast global address.

IsIPv6SiteLocal

Возвращает сведения о том, является ли адрес локальным IPv6-адресом для веб-узла.Gets whether the address is an IPv6 site local address.

IsIPv6Teredo

Получает сведения о том, является ли адрес IPv6-адресом Teredo.Gets whether the address is an IPv6 Teredo address.

ScopeId

Возвращает или задает идентификатор области действия адреса, соответствующего протоколу IPv6.Gets or sets the IPv6 address scope identifier.

Методы

Equals(Object)

Сравнивает два IP-адреса.Compares two IP addresses.

GetAddressBytes()

Предоставляет копию IPAddress в виде массива байтов.Provides a copy of the IPAddress as an array of bytes.

GetHashCode()

Возвращает значение хэш-функции для IP-адреса.Returns a hash value for an IP address.

GetType()

Возвращает объект Type для текущего экземпляра.Gets the Type of the current instance.

(Унаследовано от Object)
HostToNetworkOrder(Int16)

Преобразует короткое значение из байтового формата узла в сетевой байтовый формат.Converts a short value from host byte order to network byte order.

HostToNetworkOrder(Int32)

Преобразует целое значение из байтового формата узла в сетевой байтовый формат.Converts an integer value from host byte order to network byte order.

HostToNetworkOrder(Int64)

Преобразует длинное целое значение из байтового формата узла в сетевой байтовый формат.Converts a long value from host byte order to network byte order.

IsLoopback(IPAddress)

Показывает, является ли IP-адрес адресом замыкания на себя.Indicates whether the specified IP address is the loopback address.

MapToIPv4()

Сопоставляет объект IPAddress с IPv4-адресом.Maps the IPAddress object to an IPv4 address.

MapToIPv6()

Сопоставляет объект IPAddress с адресом IPv6.Maps the IPAddress object to an IPv6 address.

MemberwiseClone()

Создает неполную копию текущего объекта Object.Creates a shallow copy of the current Object.

(Унаследовано от Object)
NetworkToHostOrder(Int16)

Преобразует короткое значение из байтового формата узла в сетевой байтовый формат.Converts a short value from network byte order to host byte order.

NetworkToHostOrder(Int32)

Преобразует целое значение из байтового формата узла в сетевой байтовый формат.Converts an integer value from network byte order to host byte order.

NetworkToHostOrder(Int64)

Преобразует длинное целое значение из байтового формата узла в сетевой байтовый формат.Converts a long value from network byte order to host byte order.

Parse(ReadOnlySpan<Char>)
Parse(String)

Преобразует строку IP-адреса в экземпляр класса IPAddress.Converts an IP address string to an IPAddress instance.

ToString()

Преобразует адрес в Интернете в его стандартный формат.Converts an Internet address to its standard notation.

TryFormat(Span<Char>, Int32)
TryParse(ReadOnlySpan<Char>, IPAddress)
TryParse(String, IPAddress)

Определяет, является ли строка допустимым IP-адресом.Determines whether a string is a valid IP address.

TryWriteBytes(Span<Byte>, Int32)

Применяется к