C#.NET网络程序开发的基本类(一)(C#---网络编程)

C#.NET网络程序开发的基本类

C#.NET的System.NET命名空间为Internet网络上使用的多种协议提供了便利的编程接口。

1、IPAddress类 

IPAddress 类提供的是主机的IP地址及相关信息,包括IP回环地址Loopback、IP广播地址Broadcase以及对IPv6协议的支持。

IPAddress的构造函数是public IPAddress(long address)

 

IPAddress类的常用公共方法

 

Equals(Object)

比较两个 IP 地址。

GetAddressBytes( )

以字节数组形式提供IPAddress 的副本

HostToNetworkOrder( )

由主机字节顺序转换为网络字节顺序

IsLoopback(IPAddress)

指示指定的 IP 地址是否为返回地址。

NetworkToHostOrder( )

数字由网络字节顺序转换为主机字节顺序。

Parse(String)

IP 地址将字符串转换为 IPAddress 实例。

ToString()

将 Internet 地址转换为其标准表示法。

TryParse(String, IPAddress)

确定字符串是否为有效 IP 地址。

 

常用Parse()方法创建IPAddress实例,其语法如下:

public static IPAddress Parse(string ipString)

将IP地址转换成标准表示法的ToString()方法的语法如下:

public override string ToString()

2、IPHostEntry类

IPHostEntry类将域名系统(DNS)主机名与别名和匹配的IP地址相关联,它提供主机的IP地址(借助IPAdress类)、主机名及别名。

IPHostEntry类的属性:

 

属性名称

类型

说明

AddressList

IPAddress[]

获取或设置与主机关联的 IP 地址列表。

Aliases

string[]

获取或设置与主机关联的别名列表,通常为一组字符串。

HostName

string[]

获取或设置主机的 DNS 名称。

3、IPEndPoint类

将网络端点表示为 IP 地址和端口号。其对象表示指定IP地址和端口号的组合,从而形成到主机的连接点。

 

命名空间:  System.Net程序集:  System(在 System.dll 中)

 

语法

C#

[SerializableAttribute]
public class IPEndPoint : EndPoint

 

构造函数

  名称 说明
公共方法 IPEndPoint(Int64, Int32) 用指定的地址和端口号初始化 IPEndPoint 类的新实例。
公共方法 IPEndPoint(IPAddress, Int32) 用指定的地址和端口号初始化 IPEndPoint 类的新实例。

IPEndPoint类属性

属性名称 类型
公共属性Address                          IPAddress                   获取或设置终结点的 IP 地址。
公共属性AddressFamily AddressFamily 获取网际协议 (IP) 地址族。 (重写 EndPoint.AddressFamily。)
公共属性Port int 获取或设置终结点的端口号。
 

 

 

 

4、Dns 类

 Dns类是一个静态类提供简单的域名解析功能。

Dns类的静态方法:

C#.NET网络程序开发的基本类(一)(C#---网络编程)_第1张图片

 

GetHostName:获取本地计算机的主机名。

 

GetHostAddresses: 返回指定主机的 Internet 协议 (IP) 地址。

示例1、

下面的示例在 DNS 数据库中查询关于主机 www.contoso.com 的信息。

IPHostEntry hostInfo = Dns.GetHostByName("www.contoso.com");

示例2、编程实现获取并显示本机的IP地址、主机名信息。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;   //网络

namespace showIP
{
    class Program
    {
        static void Main(string[] args)
        {
            //获得本机局域网所有IP地址
            IPAddress[] addr = Dns.GetHostByName(Dns.GetHostName()).AddressList;
            foreach (IPAddress ip in addr)
            {
                Console.WriteLine("本机IP地址为:" +ip.ToString());
            }
            //获取本机主机名
            Console.WriteLine("本机主机名为:"+Dns.GetHostEntry(addr[0]).HostName);
            //创建本机端口
            IPAddress localIp = IPAddress.Parse("127.0.0.1");
            IPEndPoint iep = new IPEndPoint(localIp, 80);
            Console.WriteLine("IP端点:" + iep.ToString());
            Console.WriteLine("IP端口:" + iep.Port);
            Console.WriteLine("IP地址族:" + iep.AddressFamily);
            Console.WriteLine("可分配端口最大值:" + IPEndPoint.MaxPort);
            Console.WriteLine("可分配端口最小值:" + IPEndPoint.MinPort);
        }
    }
}
 
 
 

 

 

 

 

5、C#的命名空间System.Net.NetworkInformation提供了与Ping有关的Ping、PingOptions和PingReply类

 

(1)Ping类

 

 

利用Ping类检测本地主机与远程主机之间的通信是否正常。

C#.NET网络程序开发的基本类(一)(C#---网络编程)_第2张图片

C#.NET网络程序开发的基本类(一)(C#---网络编程)_第3张图片

C#.NET网络程序开发的基本类(一)(C#---网络编程)_第4张图片

 

 

 

 

(2)

 

PingOptions 类

用于控制如何 Ping 传输数据包。

 

命名空间:   System.Net.NetworkInformation


程序集:  System(位于 System.dll)

 

 

继承层次结构

 

System.Object


  System.Net.NetworkInformation.PingOptions

 

C#.NET网络程序开发的基本类(一)(C#---网络编程)_第5张图片

C#.NET网络程序开发的基本类(一)(C#---网络编程)_第6张图片

 

 

 

 

(3)PingReply 类

 

 

 

 

 

 

 

 

 

提供有关的状态和生成的数据的信息 Send 或 SendAsync 操作

 
 

 

 

命名空间:   System.Net.NetworkInformation


程序集:  System(位于 System.dll)

 

 

继承层次结构

 

System.Object


  System.Net.NetworkInformation.PingReply

 

C#.NET网络程序开发的基本类(一)(C#---网络编程)_第7张图片

 

 

 

示例3、编程实现用Ping、PingOptions和PingReply类测试目标主机是否可以到达的信息。


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;   //网络
using System.Net.NetworkInformation;  //网络


namespace PingHost
{
    class Program
    {
        static void Main(string[] args)
        {
            Ping pingSender = new Ping();
            PingOptions options = new PingOptions();
            options.DontFragment = true;


            //data为要发送的数据
            string data = "aaaaaaa";
            byte[] buffer = Encoding.ASCII.GetBytes(data);
            int timeout = 120;
            //Ping网络IP地址为:192.168.0.103的主机
            PingReply reply = pingSender.Send("192.168.0.103", timeout, buffer, options);
            if (reply.Status==IPStatus.Success)
            {
                Console.WriteLine("Address:{0}", reply.Address.ToString());
                Console.WriteLine("RoundTrip time:{0}", reply.RoundtripTime);
                Console.WriteLine("Time to live:{0}", reply.Options.Ttl);
                Console.WriteLine("Don't fragment:{0}", reply.Options.DontFragment);
                Console.WriteLine("Buffer size:{0}", reply.Buffer.Length);
            }
            else
            {
                Console.WriteLine("目标主机Ping失败");
            }
            Console.ReadLine();
        }
    }
}

 

 

 

C#.NET网络程序开发的基本类(一)(C#---网络编程)_第8张图片

你可能感兴趣的:(网络编程(TCP/IP))