网络编程基础--常用类
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地址和别名。
另外: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类提供的异步方法。
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类提供的异步方法。
相关文章推荐
- https://yq.aliyun.com/articles/65125?spm=5176.100240.searchblog.18.afqQoU
- HTTP协议浅析(下): 使用HTTP协议实现通信
- HTTPS抓包之Charles
- Swift 网络请求数据与解析
- ip分片与linux实现(整理自网络)
- 还有 3 天,苹果就要关上 HTTP 大门了
- Linux-磁盘及网络IO工作方式解析
- HttpServlet源码
- [转]神经网络-激活函数
- httpClient使用的工具类
- angularjs+文件上传 http头content-type字段变化
- Android 文件下载引擎,稳定、高效、简单易用:FileDownloader(结合okhttp)
- 网络编程基础--TCP/IP
- ClearContainer 网络部分源码分析
- TCP和UDP概念
- nfs 网络文件共享
- HttpClient中post请求http、https示例
- https免费申请ssl证书
- TCP/IP协议族学习笔记
- BZOJ 1797 网络流的可行边&必须边