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 地址。
公共属性AddressFamilyAddressFamily获取网际协议 (IP) 地址族。 (重写 EndPoint.AddressFamily。)
公共属性Portint获取或设置终结点的端口号。
 

 

 

 

4、Dns 类

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

Dns类的静态方法:

 

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类检测本地主机与远程主机之间的通信是否正常。

 

 

 

 

(2)

 

PingOptions 类

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

 

命名空间:   System.Net.NetworkInformation


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

 

 

继承层次结构

 

System.Object


  System.Net.NetworkInformation.PingOptions

 

 

 

 

 

(3)PingReply 类

 

 

 

 

 

 

 

 

 

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

 
 

 

 

命名空间:   System.Net.NetworkInformation


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

 

 

继承层次结构

 

System.Object


  System.Net.NetworkInformation.PingReply

 

 

 

 

示例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();
        }
    }
}

 

 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值