当前位置: 首页 > news >正文

“.NET 4.0 网络开发入门之旅系列文章”—— IP 知多少?(中)

“.NET 4.0 网络开发入门之旅系列文章”

IP 知多少?(中)

“.NET 4.0 网络开发入门之旅系列文章”—— IP 知多少?(上)

3. 怎样知道特定计算机的IP 地址?

.NET 基类库中有一个Dns 静态类,可以完成这个工作(图2 ):

2

Dns 提供了一堆的静态方法完成各种常用的IP 地址查询功能。

比如,以下代码获取本地主机名称:



String LocalhostName = Dns.GetHostName();



以下代码获取微软公司主机的IP 地址:



IPAddress[] ips = Dns.GetHostAddresses("www.microsoft.com") ;



将上述两句“组合起来”,我们就可以获取本地主机的所有IP 地址:



IPAddress[] ips = Dns.GetHostAddresses(Dns.GetHostName());



如果希望获取更详细的信息,可以使用Dns 的以下方法:



public static IPHostEntry GetHostEntry( string hostNameOrAddress )



上述代码中的IPHostEntry.NET 基类库中的另一个类(图3 ),可以看到通过它不仅可以获取指定主机的所有IPv4IPv6 地址,还可以知道它的主机名(HostName )和别名(Aliases )。

3

以下是使用GetHostEntry 直接访问微软网站得到的主机信息:

主机名称:lb2.www.ms.akadns.net

主机www.microsoft.com 拥有以下IP 地址:

AddressFamily:InterNetwork Address:207.46.170.10

AddressFamily:InterNetwork Address:65.55.21.250

AddressFamily:InterNetwork Address:207.46.170.123

AddressFamily:InterNetwork Address:65.55.12.249

注意:

Dns 类中有些方法被废弃(Obsolete )了,使用它时注意一下编译器给出的警告信息。

为了方便起见,我们将获取本地主机IPv4 地址的功能封装为一个静态方法,并将其放入到一个AddressHelper 静态类中:

public static class AddressHelper

{

public static IPAddress[] GetLocalhostIPv4Addresses()

{

String LocalhostName = Dns.GetHostName();

IPHostEntry host = Dns.GetHostEntry(LocalhostName);

List<IPAddress> addresses=new List<IPAddress>();

foreach (IPAddress ip in host.AddressList)

{

if (ip.AddressFamily == AddressFamily.InterNetwork)

addresses.Add(ip);

}

return addresses.ToArray();

}

// ……

}

再把上述这个类添加到一个MyNetworkLibrary 类库中,此类库将用于封装一些常用的功能,后续文章中的示例将直接使用它。

==============================

点击以下链接阅读本文最后一个部分:

“.NET 4.0 网络开发入门之旅系列文章”—— IP 知多少?(下)

相关文章:

  • 站在巨人的肩膀上——制作酷炫web幻灯片
  • 怎么去掉Flex4生成的SWF加载时的进度条
  • 正式开始我的技术生涯
  • “.NET 4.0网络开发入门之旅系列文章”——IP知多少(上)
  • Section 1.5 也许这才是暴力搜索
  • “.NET 4.0 网络开发入门之旅系列文章”—— IP 知多少?(下)收藏 《 .NET 4.0网络开发入门之旅-- 我在“网” 中央》...
  • 项目总结- 架构及代码样例
  • 关于Flash Player详细说明
  • android 网络交互
  • 指定索引
  • .Net程序猿乐Android发展---(10)框架布局FrameLayout
  • 这个世界并不亏欠我们什么——Leo网上答疑52
  • 《python核心编程》笔记——文件的创建、读取和显示
  • 详解TCC89x的LCD数值设置
  • gentoo系统安装
  • Android交互
  • ECMAScript 6 学习之路 ( 四 ) String 字符串扩展
  • ERLANG 网工修炼笔记 ---- UDP
  • java中具有继承关系的类及其对象初始化顺序
  • Laravel深入学习6 - 应用体系结构:解耦事件处理器
  • LeetCode刷题——29. Divide Two Integers(Part 1靠自己)
  • LintCode 31. partitionArray 数组划分
  • mysql中InnoDB引擎中页的概念
  • Spark RDD学习: aggregate函数
  • SpringCloud集成分布式事务LCN (一)
  • VUE es6技巧写法(持续更新中~~~)
  • windows下使用nginx调试简介
  • 包装类对象
  • 理解 C# 泛型接口中的协变与逆变(抗变)
  • 巧用 TypeScript (一)
  • 如何进阶一名有竞争力的程序员?
  • 深入体验bash on windows,在windows上搭建原生的linux开发环境,酷!
  • 实现简单的正则表达式引擎
  • 它承受着该等级不该有的简单, leetcode 564 寻找最近的回文数
  • 温故知新之javascript面向对象
  • 我的面试准备过程--容器(更新中)
  • 想使用 MongoDB ,你应该了解这8个方面!
  • gunicorn工作原理
  • 选择阿里云数据库HBase版十大理由
  • ​LeetCode解法汇总1410. HTML 实体解析器
  • ​无人机石油管道巡检方案新亮点:灵活准确又高效
  • # Panda3d 碰撞检测系统介绍
  • # 睡眠3秒_床上这样睡觉的人,睡眠质量多半不好
  • (13):Silverlight 2 数据与通信之WebRequest
  • (3)STL算法之搜索
  • (C++20) consteval立即函数
  • (Java岗)秋招打卡!一本学历拿下美团、阿里、快手、米哈游offer
  • (NSDate) 时间 (time )比较
  • (PyTorch)TCN和RNN/LSTM/GRU结合实现时间序列预测
  • (二)c52学习之旅-简单了解单片机
  • (附源码)ssm航空客运订票系统 毕业设计 141612
  • (附源码)ssm学生管理系统 毕业设计 141543
  • (转)http协议
  • (转)Mysql的优化设置
  • (状压dp)uva 10817 Headmaster's Headache