您的位置:首页 > 理论基础 > 计算机网络

网络编程基础--常用类

2016-12-28 16:25 381 查看
1、IPAddress类

     1) IPAddress类的默认构造函数为:public IPAddress(long address)

         常用:Parse()方法用于创建IPAddress。IPAddress myip = IPAddress.Parse("192.168.1.1");

               
ToString()方法用于将Internet地址转换成标准表示法。string address  = IPaddress.ToString();

                  Equals()方法用于比较两个IP地址

                 ISLoopBack()方法来判断IP地址是否为返回地址

      

    2) 受保护方法

        Finalize():允许Object在垃圾回收之前,尝试释放资源并执行其他清理操作

        MemberwiseClone():创建当前Object的浅表副本

    3) 公共字段,代表特殊IP地址

         Any:等效于0.0.0.0,用于代表本地系统可用的任何IP地址

        Broadcast:等效于255.255.255.255,用于代表本地网络的IP广播地址

        Loopback:等效于127.0.0.1,代表环回地址

        None:等效于255.255.255.255,代表没有网络接口

        例如:

public static void Main()

{  

     string address = IPAddress.None.ToString();

      

      Console.WriteLine("IP address:"+ address);

}

     

【实例】

using System;
using System.Net;

class AddressSample
{
    public static void Main()
    {
    IPAddress test1 = IPAddress.Parse("192.168.1.1");   //192.168.1.1     ,创建5个IPAddress对象,并赋值
    IPAddress test2 = IPAddress.Loopback;          //127.0.0.1
    IPAddress test3 = IPAddress.Broadcast;        //255.255.255.255
    IPAddress test4 = IPAddress.Any;                //0.0.0.0
    IPAddress test5 = IPAddress.None;               //255.255.255.255

   
IPHostEntry here  = Dns.GetHostByName(Dns.GetHostName());     //这两句获取本地ip地址
    IPAddress  myself  = here.AddressList[0];           //202.115.203.199

    if (IPAddress.IsLoopback(test2))                //判断test2是否为返回地址
        Console.WriteLine("The Loopback address is: {0}", test2.ToString());
    else
        Console.WriteLine("Error obtaining the loopback address");

    Console.WriteLine("The Local IP address is: {0}/n", myself.ToString());   //打印本地ip地址

    if (myself == test2)                               //判断本地地址是否为返回地址
        Console.WriteLine("The loopback address is the same as local address./n");
    else
        Console.WriteLine("The loopback address is not the local address./n");

        Console.WriteLine("The test address is: {0}", test1.ToString());     //打印其他ip地址
        Console.WriteLine("Broadcast address: {0}", test3.ToString());
        Console.WriteLine("The ANY address is: {0}", test4.ToString());
        Console.WriteLine("The NONE address is: {0}", test5.ToString());
    }
}

附录一篇有关方法的详细介绍的文章:https://msdn.microsoft.com/zh-cn/library/system.net.ipaddress.aspx

2、DNS类

    DNS的主要作用是将主机名和电子邮件目标地址映射为IP地址,DNS是一个静态类。在IPHostEntry类的实例中返回来自DNS查询的主机信息。如果指定的主机在DNS数据库中有多个入口,则IPHostEntry包括多个IP地址和别名。

 
BeginGetHostAddresses异步返回指定主机主机的Internet协议(IP)地址
BeginGetHostByName 开始异步请求关于指定DNS主机名的IPHostEntry信息
EndGetHostAddresses 结束对DNS信息的异步请求
EndGetHostByName结束对DNS信息的异步请求
EndGetHostEntry结束对DNS信息的异步请求
GetHostAddresses返回指定主机的Internet协议(IP)地址
GetHostByAddress获取IP地址的DNS主机信息
GetHostByName获取指定DNS主机名的DNS信息
GetHostEntry已重载。将主机名或IP地址解析为IPHostEntry实例
GetHostName获取本地计算机的主机名称 
 

 

 

 

 

 

 

 

 

 

另外:Resolve()与EndResolve()分别是同步和异步方法

         在用户不知道输入什么格式的远程主机的地址时,Resolve()可以接受主机名格式和ip地址格式的任一种,返回IPHostEntry实例

为什么用异步?

答:DNS方法可能会给用户带来网络阻塞,导致远程DNS访问通信的时间延时,程序要等几秒钟才能返回DNS的信息,此时就需要用异步来解决此      问题。

3、IPHostEntry类

       IPHostEntry类是为Internet主机地址信息提供容器的类,它将DNS主机名与一个别名数组和匹配的IP地址数组相关。

       通常IPHostEntry类作为Dns类的辅助类使用。该类有如下几个属性:
  Aliases属性:获取或设置与主机相关的别名清单。
  AddressList属性:获取或设置与主机相关的IP地址。其值为IPAddress类型的数组,其中包含的IP地址用于解析Aliases属性中的主机名。
  HostName属性:获取或设置主机的DNS名。包含服务器的基础主机名,如果服务器的DNS项定义了附加别名,则可通过Aliases属性使用它们。

   【实例】

      
IPHostEntry result = Dns.GetHostByName("www.baidu.com");
         Console.WriteLine("Host name:",result.HostName);                    //获取主机的DNS名称

        foreach(string temp inresult.Aliases)

       {       Console.WriteLine("Aliases:", temp);   }
                       //使用循环显示IP地址表

       foreach(IPAddress address inresult.AddressList)

       {       Console.WriteLine("Address:", address.ToString());
 }     //遍历地址列表

       
 

4、IPEndPoint类

      IPEndPoint类以IP地址和端口号的形式代表一个网络终端。该类中包含应用程序连接到主机服务时需要的主机和端口信息,通过组合主机的IP地址和端口号构成服务的一个连接点。

      IPEndPoint类属性:  Address:得到或设置IP地址属性

                                   AddressFamily:得到IP地址系列

                                   Port:得到或设置TCP/UDP端口号

               类字段:MaxPort:指定可以分配给Port属性的最大值,MaxPort值设置为0x0000FFFF,只读

                           MinPort:最小值,只读。二者用于可获得端口的范围。

【实例】

 public static void Main()
    {
    IPAddress myaddress = IPAddress.Parse("192.168.1.1");   
    IPEndPoint  ex = new IPEndPoint(myaddress, 8000);              //创建IPEndPoint实例

    Console.WriteLine("AddressFamily,Address,the port is:", ex.AddressFamily, ex.Address, ex.Port);  //分别输出三者
    Console.WriteLine("The IPEndPoint is:", ex.ToString());           //输出192.168.1.1:8000
    IConsole.WriteLine("Max port, Min port is:", IPEndPoint.MaxPort, IPEndPoint.MinPort);        //输出端口的最大和最小

  }

4、Socket类

 
     建立在System.Net.Sockets.Socket,

 
     TCPClient:为TCP网络服务提供了客户连接

 
     TCPListener:用以监听TCP客户连接

 
     UDPClient:用于提供UDP网络服务

 
     这些协议类使用Socket类的同步方法提供对网络服务的简单直接的访问,如果要使用异步Socket方法,可以使用NetworkStream类提供的异步方法。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: