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, ...
随机推荐
- java工作环境配置jdk,idea
下载 jdk 1.8 https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 配置环境 ...
- v2ex站长专访 - 100offer专访Livid:不仅仅是V站站长
转载自: https://www.douban.com/group/topic/121611313/ 前几天上网时偶然发现v2ex站长的blog(https://livid.v2ex.com/),了解 ...
- ise与win8兼容解决方案
win8中ise无法加载code,显示impact4.exe停止运行. 解决方法如下: 找到程序安装路径 1.进入文件夹 D:\Xilinx\14.6\ISE_DS\ISE\lib\nt64 把li ...
- Geode 集群搭建,快速上手使用
Geode 介绍: Geode是一个提供实时.一致访问大型分布式云平台下数据密集型应用的数据管理平台. Geode 通过跨多进程,把内存.CPU.网络资源和可选的本地磁盘汇集起来,来管理应用程序对象及 ...
- Linux学习-循环执行的例行性工作排程
循环执行的例行性工作排程则是由 cron (crond) 这个系统服务来控制的.Linux 系统上面原本就有非常多的例行性工作,因此这个系统服务是默认启动的. 另外, 由于使用者自己也可以进行例行性工 ...
- poj 3107 Godfather(树的重心)
Godfather Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 7885 Accepted: 2786 Descrip ...
- HDU 5238 Calculator 线段树 中国剩余定理
题意: 给一个计算器,有一系列计算步骤,只有加,乘,幂三种运算. 有一种查询操作:查询初始值为\(x\)的时候,最终运算结果模\(29393\)的值. 有一种修改操作:可以修改第\(p\)个运算的运算 ...
- [转] NGINX宏观手记
前言 任何一个工具都有它的灵魂所在,作为一个PHP程序员,我们可能仅仅使用了它的一小部分,这篇文章让你更加了解Nginx,本章大多都是总结.翻译.整理 ,希望你可以知道nginx不仅仅是PHP的附属品 ...
- Selenium WebDriver- 操作frame中的页面元素
#encoding=utf-8 import unittest import time from selenium import webdriver from selenium.webdriver i ...
- 递归函数的写法(以strcpy函数为例)
1. 递归函数模板 递归的前提是,找到一个公共子问题(或公共操作),然后将该函数构造为递归函数. retType function( ... ) { 结束条件 { [处理] 返回 } 递归条件 { [ ...