C#中IPAddress类/Dns类/IPHostEntry类/IPEndPoint用法简介
C#中IPAddress类/Dns类/IPHostEntry类/IPEndPoint用法简介
IP是一种普遍应用于因特网、允许不同主机能够相互找到对方的寻址协议。IP地址由4个十进制的数字号码所组成,而每一个号码的值介于0~255之间,它虽然解决了网络上计算机的识别问题,但是IP地址确不容易记,因此域名系统(DNS)被开发出来,它专门用于将IP地址转换成有意义的文字,以方便识别记忆。
.Net FrameWork类库内置了相关类用于处理IP地址的问题,这些类在System.NET命名空间下。这里主要对DNS类进行详细介绍。
IPAddress类提供了对IP地址的转换、处理等功能。其Parse方法可将IP地址字符串转换为IPAddress实例。
如:IPAddress ip = IPAddress.Parse(“192.168.1.1”);
IPAddress 类提供了7个只读字段:
Any 表示本地系统可用的任何IP地址
Broadcast 表示本地网络的IP广播地址
IPv6Any Socket.Bind方法用此字段指出本地系统可用的IP地址
IPv6Loopback 表示系统的回送地址
IPv6None 表示系统上没有可用的网络接口
Loopback 表示系统的回送地址
None 表示系统上没有可用的网络接口
Dns类提供了一系列静态的方法,用于获取提供本地或远程域名等功能,常用方法有:
1) GetHostAddresses方法
获取指定主机的IP地址,返回一个IPAddress类型的数组。
函数原形为:
public static IPAddress[] GetHostAddresses(string hostNameOrAddress);
例如:
IPAddress[] ip=Dns.GetHostAddresses("www.cctv.com");
listBox1.Items.AddRange(ip);
2) GetHostName方法
获取本机主机名。例如:string hostname = Dns.GetHostName();
IPHostEntry类的实例对象中包含了Internet主机的相关信息。
常用属性有:AddressList属性和HostName属性。
AddressList属性作用:获取或设置与主机关联的IP地址列表,是一个IPAddress类型的数组,包含了指定主机的所有IP地址;HostName属性则包含了服务器的主机名。
在Dns类中,有一个专门获取IPHostEntry对象的方法,通过IPHostEntry对象,可以获取本地或远程主机的相关IP地址。
例如:
listBox1.Items.Add("搜狐新闻所用的服务器IP地址有:");
IPAddress[] ip = Dns.GetHostEntry("news.sohu.com").AddressList;
listBox1.Items.AddRange(ip);
listBox1.Items.Add("本机IP地址为:");
ip = Dns.GetHostEntry(Dns.GetHostName()).AddressList;
listBox1.Items.AddRange(ip);
在C#中,IPEndPoint类包含了应用程序连接到主机上的服务所需的IP地址和端口信息。
IPEndPoint类常用的构造函数为:public IPEndPoint(IPAddress, int);
其中第一个参数指定IP地址,第二个参数指定端口号。
C#中IPAddress和IPEndPoint的关系
IP addresses in C#
在.Net网络库里面最大的优点就是IP地址和端口被成对处理,相比于UNIX中用的方法真是一个巨大的令人欢迎的进步。.NET定义了两个类来处理关于IP地址的问题。
One of the biggestadvantages you will notice in the .NET network library is the way IPaddress/port pairs are handled. It is a fairly straightforward process thatpresents a welcome improvement over the old, confusing UNIX way. .NET definestwo classes in the System.Net namespace to handle various types of IP address information:
· IPAddress
· IPEndPoint
IPAddress
一个IP地址对象用来表示一个单一的IP地址,其值同时也可以应用在许多不同的方法里面。
An IPAddress object isused to represent a single IP address. This value is then used in varioussocket methods to represent the IP address. The default constructor for IPAddress is asfollows:
publicIPAddress(long address)
实际上,默认的构造函数几乎是用不到的,因为在该类里面许多的函数可以用来构造并操作IP地址对象。其中Parser()函数经常用来构造该类。
The defaultconstructor takes a long value and converts it to an IPAddress value. In practice, the default isalmost never used. Instead, several methods in the IPAddress class can beused to create and manipulate IP addresses. The Parse() method is often used to create IPAddress instances:
IPAddressnewaddress = IPAddress.Parse("192.168.1.1");
IPEndPoint
.NET框架用IPEndPoint 对象来表示一个特定的IP地址和端口的组合,应用该对象的场景多是在讲socket绑定到本地地址或者将socket绑定到非本地地址。
The .NET Frameworkuses the IPEndPoint object to represent a specific IP address/port combination. An IPEndPoint object isused when binding sockets to local addresses, or when connecting sockets toremote addresses.
实例解析:
IPAddress是ip,如“127.0.0.1”
IPEndPoint是ip和端口对的组合,如“127.0.0.1:80”
· IPAddress
构造一个IP地址对象IPAddress的构造函数是
public
IPAddress(long address)
但通常情况下用不到它,因为有简单的方法可以使用如:
方法1:
IPAddress.Any
方法2:
IPAddress.Parse("192.168.1.1");
IPAddress.Any使用你机器上一个可用ip来初始化这个IP地址对象。
IPAddress.Parse("192.168.1.1");创建IPAddress对象的一个选择
· IPEndPoint (IP地址和端口的组合)
创建方式如:两个参数分别表示IP地址和端口号
IPEndPoint ipEndPoint=new IPEndPoint(IPAddress.Any,2112)
例: IPAddress类、Dns类、IPHostEntry类和IPEndPoint类的使用方法。
下面对比较重要的方法进行详细介绍。
(1)GetHostAddresses方法
返回指定主机的Internet协议(IP)地址。
语法:
1
2
3
|
public ) |
参数:
hostNameOrAddress:要解析的主机名或IP地址。
返回值:一个IPAddress类型的数组,该类型保存由hostNameOrAddress参数指定的主机的IP地址。
(2)GetHostByAddress方法
获取IP地址的DNS主机信息(以发生成重载),重载方法为为Dns.GetHostByAddress (IPAddress)和Dns.GetHostByAddress (String),下面分别进行介绍。
l Dns.GetHostByAddress (IPAddress)
根据指定的IPAddress创建IPHostEntry实例。
语法:
1
2
3
4
|
public ( ) |
参数:
address:一个IPAddress。
返回值:一个IPHostEntry。
l Dns.GetHostByAddress (String)
根据IP地址创建IPHostEntry实例。
语法:
1
2
3
4
|
public ( ) |
参数:
address:IP地址。
返回值:一个IPHostEntry实例。
(3)GetHostName方法
获取本地计算机的主机名。
语法:
public static string GetHostName ()
返回值:包含本地计算机的DNS主机名的字符串。
(4)Resolve方法
将DNS主机名或IP地址解析为IPHostEntry实例。
语法:
1
2
3
4
|
public ( ) |
参数:
hostName:DNS样式的主机名或IP地址。
返回值:一个IPHostEntry实例,包含有关hostName中指定的主机的地址信息。
下面列举几种常用的DNS类的使用方法。
获得主机名的实现代码如下:
1
2
3
4
5
6
7
|
private { String IPHostEntry ipH this.textBox1.Text } |
根据IP或计算机名获得计算机名的实现代码如下:
1
2
3
4
5
6
|
private { IPHostEntry string MessageBox.Show(strHost); } |
获得IP列表的实现代码如下:
1
2
3
4
5
6
7
|
private { IPHostEntry IPAddress[] foreach MessageBox.Show(ips.ToString()); } < br >< br > // DNS类:在.net中的System.net命名空间下,主要的功能是从 br > // IPHostEntry类:将一个域名系统 < br > // IPAddress < br >< br >1、一个域名只能绑定一个网站,多个域名可以绑定同一个站点 < br >2、一个域名可以免费分出10个子域名,超过10要另收费,每个子域名都是相互独立的 < br >3、子域名的申请和解悉都要到你的域名所在服务商(万网\新网\其它)提供的域名管理平台上操作 < br >4、子域名绑定要在空间服务商的平台下操作 < br >5、如果只有一个空间,可以考虑URL重写 |
C#中IPAddress类/Dns类/IPHostEntry类/IPEndPoint用法简介的更多相关文章
- Java中unicode增补字符(辅助平面)相关用法简介
转载自 http://blog.csdn.net/gjb724332682/article/details/51324036 前言 Java从1.5版本开始,加入了unicode辅助平面的支持.相关的 ...
- Servlet和JSP中的过滤器都是Java类
JSP 过滤器 Servlet和JSP中的过滤器都是Java类,它们存在的目的如下: 在请求访问后端资源时拦截它 管理从服务器返回给客户端的响应 下面列出了多种常用的过滤器类型: 认证过滤器 数据压缩 ...
- 创建如下三个类:(People类中的三个方法分别输出一些信息,ChinaPeople 和AmericanPeople类重写父类的三个方法)。
创建如下三个类:(People类中的三个方法分别输出一些信息,ChinaPeople 和AmericanPeople类重写父类的三个方法). ackage com.chuoji.text01; pub ...
- Android中View类OnClickListener和DialogInterface类OnClickListener冲突解决办法
Android中View类OnClickListener和DialogInterface类OnClickListener冲突解决办法 如下面所示,同时导入这两个,会提示其中一个与另一个产生冲突. 1i ...
- 在lua脚本中使用我们自定义的精灵类
首先创建cocos2dx-lua项目,然后在项目中添加我们的自定义精灵类:这里Himi类名为:HSprite // // HSprite.h // cocos2dx_lua_tests_by_Himi ...
- 理解是最好的记忆方法 之 CSS中a链接的④个伪类为何有顺序
理解是最好的记忆方法 之 CSS中a链接的④个伪类为何有顺序 在CSS中,a标签有4种伪类,分别为: a:link, a:visited, a:hover, a:active 对其稍有了解的前端er都 ...
- 简单练习题2编写Java应用程序。首先定义一个描述银行账户的Account类,包括成员变 量“账号”和“存款余额”,成员方法有“存款”、“取款”和“余额查询”。其次, 编写一个主类,在主类中测试Account类的功能
编写Java应用程序.首先定义一个描述银行账户的Account类,包括成员变 量“账号”和“存款余额”,成员方法有“存款”.“取款”和“余额查询”.其次, 编写一个主类,在主类中测试Account类的 ...
- Java中如何使封装自己的类,建立并使用自己的类库?
转自:http://blog.csdn.net/luoweifu/article/details/7281494 随着自己的编程经历的积累会发现往往自己在一些项目中写的类在别的项目中也会有多次用到.你 ...
- XCode中的单元测试:编写测试类和方法(内容意译自苹果官方文档)
当你在工程中通过测试导航栏添加了一个测试target之后, xcode会在测试导航栏中显示该target所属的测试类和方法. 这一章演示了怎么创建测试类,以及如何编写测试方法. 测试targets, ...
随机推荐
- 汇编语言 Part 2——寄存器
处理器操作主要涉及处理数据.这些数据可以存储在内存中并从中访问.但是,读取数据并将其存储到内存中会减慢处理器的速度,因为它涉及将数据请求通过控制总线发送到内存存储单元并通过同一通道获取数据的复杂过程. ...
- MySQL配置允许远程登录
MySQL默认只允许用户本地登录,需要远程连接可进行如下操作: 允许root用户在任何地方进行远程登录,并具有所有库任何操作权限: 使用root用户登录mysql: mysql -u root -p& ...
- Linux数据库忘记密码-修改方法
一.拥有原来的myql的root的密码: 方法一:在mysql系统外,使用mysqladmin# mysqladmin -u root -p password "test123"E ...
- bash的位置变量和特殊变量
bash编程的知识点:位置变量和特殊变量 位置参数变量: scirpt1.sh arg1 arg2 ... $0 $1 $2 ... ${10 ...
- Django Model two
Django_model: eg: class XXXX(models.Model): nid = models.AutoField(primary_Key=True) name = models.C ...
- java基础语法中容易出错的细节
1 java中的数字默认类型为int **容易出现类型转换错误 long 定义的数字后面必须有 “l” “L” float 定义的数字后面必须有 “f” “F” java中比int表述范围大的数,不会 ...
- hibernate源码分析1-保存一个对象
要点 用了event的方式贯穿CRUD的过程 值得学习 用dynamic-insert 支持 插入时 可选 全字段插入 还是仅仅有值的字段插入. 返回主键的值 用了 Serializable 类型作为 ...
- 大数据学习——spark安装
一主多从 1 上传压缩包 2 解压 -bin-hadoop2..tgz 删除安装包 -bin-hadoop2..tgz 重命名 mv spark-1.6.2-bin-hadoop2.6/ spark ...
- Ext.js二级联动
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <link href ...
- tornado中文教程
http://docs.pythontab.com/tornado/introduction-to-tornado/ch2.html#ch2-1 python的各种库的中文教程 http://docs ...