C#编程如何获取某台机器的IP地址?
(Northtibet发表于2002-10-10 21:29:58)
现在.NET风靡一时,用C#语言编程也成为一种时尚,本文告诉你如何进行C#编程获取某台机器的IP地址。在.NET的公共运行时中有一个名字空间System.Net,它具备有一些类使得网络编程易如反掌。其中有一个类叫Dns,使用其静态方法可以获取主机名和IP地址。下面是代码实现细节:
将下面的代码保存为 getip2.cs ,并按照下面所将的方法编译生成.exe文件。
// getip2.cs
//
// 本程序报告本机上每一块网卡的IP地址
// 命令行编译命令为:
// csc getip2.cs
// 请一定要在VS 7和.NET的环境变量中正确指定LIB库的路径;可以运行
// vsvars32.bat
//
using System;
using System.Net; // network stuff
using System.Collections; // array iterator
//
// standard C# application class
//
class MainApp {
// 应用程序入口点
public static void Main() {
// 显示主机名
string hostname = Dns.GetHostName();
Console.WriteLine("hostname = {0}", hostname);
// 显示每个IP地址
IPHostEntry hostent = Dns.GetHostByName(hostname); // 主机信息
Array addrs = hostent.AddressList; // IP地址数组
IEnumerator it = addrs.GetEnumerator(); // 迭代器
while(it.MoveNext()) { // 循环到下一个IP 地址
IPAddress ip = (IPAddress)it.Current; // 获得 IP 地址
Console.WriteLine("Address: {0}", ip); // 显示 IP地址
}
}
};
与C/C++代码相比,C#代码简单了许多。Dns 包装了相应的winsock函数和结构。用Dns.GetHostName 获取主机名,用Dns.GetHostByName 的到一个IPHostEntry 对象。.NET 类隐藏了初始化和终止,隐藏了别扭的hostent 结构,在数组中打包地址并不用你去操心IP地址的格式化问题。getip2 仅用了19 行C#代码,而相应的C/C+代码有50多行。在程序的简短方面,C#明显更胜一筹,只不过在第一次运行getip2时,加载.NET所耗费的时间有点不尽人意。
最新评论 [发表评论] | 查看所有评论 推荐给好友 打印 |
偶是这样实现的,有问题吗 string str = ""; str = System.Net.Dns.GetHostName(); System.Net.IPHostEntry iphe = System.Net.Dns.GetHostByName(str); System.Net.IPAddress[] ip = iphe.AddressList; for(int i = 0;i<ip.Length;i++) str += " -- " + ip[i].ToString(); MessageBox.Show(str); ( benbenysz 发表于 2006-7-29 9:52:00) |