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 | 获取或设置终结点的端口号。 |
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)
用于控制如何 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();
}
}
}