代码示例显示如何查询服务器以获得服务器支持的族地址及 IP 地址。

来源:互联网 发布:php设置字符编码 编辑:程序博客网 时间:2024/06/06 01:55
// 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.Resolve(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: InternNetworkV6. 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();    }  }}

原创粉丝点击