游戏开发论坛

 找回密码
 立即注册
搜索
查看: 803|回复: 0

C#编程如何获取某台机器的IP地址 wxh zt

[复制链接]

1367

主题

1993

帖子

2118

积分

金牌会员

Rank: 6Rank: 6

积分
2118
发表于 2007-9-11 20:58:00 | 显示全部楼层 |阅读模式
现在.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所耗费的时间有点不尽人意。





您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-6-21 22:11

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表