新书推介:《语义网技术体系》
作者:瞿裕忠,胡伟,程龚
   XML论坛     W3CHINA.ORG讨论区     计算机科学论坛     SOAChina论坛     Blog     开放翻译计划     新浪微博  
 
  • 首页
  • 登录
  • 注册
  • 软件下载
  • 资料下载
  • 核心成员
  • 帮助
  •   Add to Google

    >> 本版讨论.NET,C#,ASP,VB技术
    [返回] 中文XML论坛 - 专业的XML技术讨论区计算机技术与应用『 Dot NET,C#,ASP,VB 』 → 用Visual C#获得计算机名称和IP地址 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 2449 个阅读者浏览上一篇主题  刷新本主题   树形显示贴子 浏览下一篇主题
     * 贴子主题: 用Visual C#获得计算机名称和IP地址 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     admin 帅哥哟,离线,有人找我吗?
      
      
      
      威望:9
      头衔:W3China站长
      等级:计算机硕士学位(管理员)
      文章:5255
      积分:18407
      门派:W3CHINA.ORG
      注册:2003/10/5

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给admin发送一个短消息 把admin加入好友 查看admin的个人资料 搜索admin在『 Dot NET,C#,ASP,VB 』的所有贴子 点击这里发送电邮给admin  访问admin的主页 引用回复这个贴子 回复这个贴子 查看admin的博客楼主
    发贴心情 用Visual C#获得计算机名称和IP地址


    发信人: cataract (大瀑布来啦), 信区: DotNET        
    标  题: 用Visual C#获得计算机名称和IP地址
    发信站: BBS 水木清华站 (Tue Dec 11 10:41:43 2001)

    发信人: xixixi (wenwen), 信区: dotNET
    标  题: 用Visual C#获得计算机名称和IP地址
    发信站: 飘渺水云间 (Sun Dec  9 21:14:25 2001), 转信

    Visual C#是微软公司推出的下一代程序开发语言,是微软.Net 框架中的的一个重
    要组
    成部分,在推出Visual C#的过程中,微软公司还推出了与之相对应的一个软件开
    发包-
    -.Net FrameWork SDK。此软件开发包里面封装了许多类、对象。Visual C#就是通
    过调
    用这些类、对象来实现许多比较强大的功能。
    在.Net FrameWork SDK中提供了二个可用于网络编程的名称空间,一个是System.
    Net,
    另一个是System..Net.Socket。本文就是利用第一个名称空间中封装的类和对象来
    读取
    本地计算机名称和机器中所有的IP地址。
    一.概述:
    我们知道对于一台计算机来说,他只有一个计算机名称,但是他可以有多个IP地址
    。例
    如当计算机通过拨号上网的时候,在验证完用户名和口令以后,就会动态分配一个
    IP地
    址,此时计算机就拥有了二个IP地址,一个时自己设定的局域网用的IP地址,另外
    一个
    就是拨号上网动态分配的IP地址了。本文就是来探索一下如何读取此二个IP地址和
    计算
    机名称。
    二.程序设计和运行的环境:
    (1)微软公司视窗2000服务器版
    (2).Net FrameWrok SDK Beta 2版
    三.程序设计的主要思路及实现方法:
    (1).读取计算机的名称:
    在名称空间System.Net中定义了一个类Dns,在此类中定义了一个比较重要的方法
    GetH
    ostName ( ),此方法的返回值就是本地计算机名称。在程序设计中首先要导入
    System.
    Net名称空间,然后通过调用Dns类中的GetHostName ( )方法读取本地计算机名称
    ,具体
    实现的主要语句如下:
    label1.Text = "主机名称:" + System.Net.Dns.GetHostName ( ) ;
    (2).读取计算机的拨号上网临时的IP地址和局域网分配的固定IP地址:
    在程序设计中,我们是通过一个自定义的函数--getIPAddress ( )来读取IP地址的
    。首
    先看一下如何读取本地固定的IP地址的。在Dns类中还定义了一个方法
    GetHostByName (
    )。此方法的返回值时IPHostEntry 对象,此对象有一个属性是AddressList,此
    属性是
    一个IPAddress类型的数组,包含了计算机此时的所有的IP地址信息。这当中也就
    包含了
    拨号上网得到的临时分配的IP地址和局域网固定的IP地址。具体实现语句如下:
    private static string getIPAddress ( )
    {
    System.Net.IPAddress addr;
    // 获得本机局泳陀涤辛硕鯥P地址,一个时自己设定的局域网用的IP地址,另外
    一个
    就是拨号上网动态分配的IP地址了。本文就是来探索一下如何读取此二个IP地址和
    计算
    机名称。
    二.程序设计和运行的环境:
    (1)微软公司视窗2000服务器版
    (2).Net FrameWrok SDK Beta 2版
    三.程序设计的主要思路及实现方法:
    (1).读取计算机的名称:
    在名称空间System.Net中定义了一个类Dns,在此类中定义了一个比较重要的方法
    GetH
    ostName ( ),此方法的返回值就是本地计算机名称。在程序设计中首先要导入
    System.
    Net名称空间,然后通过调用Dns类中的GetHostName ( )方法读取本地计算机名称
    ,具体
    实现的主要语句如下:
    label1.Text = "主机名称:" + System.Net.Dns.GetHostName ( ) ;
    (2).读取计算机的拨号上网临时的IP地址和局域网分配的固定IP地址:
    在程序设计中,我们是通过一个自定义的函数--getIPAddress ( )来读取IP地址的
    。首
    先看一下如何读取本地固定的IP地址的。在Dns类中还定义了一个方法
    GetHostByName (
    )。此方法的返回值时IPHostEntry 对象,此对象有一个属性是AddressList,此
    属性是
    一个IPAddress类型的数组,包含了计算机此时的所有的IP地址信息。这当中也就
    包含了
    拨号上网得到的临时分配的IP地址和局域网固定的IP地址。具体实现语句如下:
    private static string getIPAddress ( )
    {
    System.Net.IPAddress addr;
    // 获得本机局域网IP地址
    addr = new System.Net.IPAddress ( Dns.GetHostByName ( Dns.GetHostName  
    ( ) )
    .AddressList [0].Address ) ;
    return addr.ToString ( ) ;
    }
    四.读取计算机名称本机固定IP地址源程序
    IP01.cs源程序:
    //导入程序用到的名称空间
    using System ;
    using System.Net;
    using System.Windows.Forms ;
    using System.Drawing ;
    public class Form3 : Form
    {
    //定义二个标签
    private Label label1 ;
    private Label label2 ;
    public static void Main ( )
    {
    Application.Run ( new Form3 ( ) ) ;
    }
    // 构造窗体
    public Form3 ( )
    {
    // 建立标签并且初始化
    this.label1 = new System.Windows.Forms.Label ( ) ;
    this.label2 = new System.Windows.Forms.Label ( ) ;
    //先继承一个Label 类
    label1.Location = new System.Drawing.Point ( 24 , 16 ) ;
    label2.Location = new System.Drawing.Point ( 44 , 36 ) ;
    //设定 Label的显示位置
    label1.Text = "主机名称:" + System.Net.Dns.GetHostName ( ) ;
    // 显示本机的计算机名称
    label2.Text = "IP 地址:" + getIPAddress ( ) ;
    // 显示本机的局域网IP地址
    label1.Size = new System.Drawing.Size ( 200 , 50 ) ;
    label2.Size = new System.Drawing.Size ( 200 , 80 ) ;
    //设定标签的大小
    label1.TabIndex = 0 ;
    label2.TabIndex = 1 ;
    label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter ;
    label2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter ;
    // 设定标签的对齐方式
    this.Text = "获得主机名称和IP地址!" ;
    this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent
    ;
    this.AutoScaleBaseSize = new System.Drawing.Size ( 8 , 16 ) ;
    this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Fixed3D ;
    // 设定窗体的边界类型
    this.ForeColor = System.Drawing.SystemColors.Desktop ;
    this.Font = new System.Drawing.Font ( "宋体" , 10 , System.Drawing.
    FontStyle
    .Bold ) ;
    // 设定字体、大小就字体的式样
    this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide ;
    this.ClientSize = new System.Drawing.Size ( 250 , 250 ) ;
    //把标签加到窗体中
    this.Controls.Add ( this.label1 ) ;
    this.Controls.Add ( this.label2 ) ;
    }
    private static string getIPAddress ( )
    {
    System.Net.IPAddress addr;
    // 获得本机局域网IP地址
    addr = new System.Net.IPAddress ( Dns.GetHostByName ( Dns.GetHostName  
    ( ) )
    .AddressList [0].Address ) ;
    return addr.ToString ( ) ;
    }
    }
    在经过以下编译命令编译后,
    csc /r:system.dll /r:system.windows.forms.dll /r:system.drawing.dll /t:
    winex
    eip01.cs
    得到ip01.exe文件,此文件就可以读取本地固定的IP地址。以下是执行后的界面:

    图01:读取计算机名称和固定IP地址
    五.读取计算机名称和拨号上网动态分配的IP地址源程序
    在前面已经说了,GetHostByName ( )方法的返回值时
    this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide ;
    在ip01.cs中AddressList [0].Address是固定的IP地址,而对于上网动态分配的
    IP地址
    是.AddressList [1].Address。据此我们可以的得到读取拨号上网动态分配的IP地
    址的
    源程序:
    IP02.cs源程序:
    //导入程序用到的名称空间
    using System ;
    using System.Net;
    using System.Windows.Forms ;
    using System.Drawing ;
    public class Form3 : Form
    {
    //定义二个标签
    private Label label1 ;
    private Label label2 ;
    public static void Main ( )
    {
    Application.Run ( new Form3 ( ) ) ;
    }
    // 构造窗体
    public Form3 ( )
    {
    // 建立标签并且初始化
    this.label1 = new System.Windows.Forms.Label ( ) ;
    this.label2 = new System.Windows.Forms.Label ( ) ;
    //先继承一个Label 类
    label1.Location = new System.Drawing.Point ( 24 , 16 ) ;
    label2.Location = new System.Drawing.Point ( 44 , 36 ) ;
    //设定 Label的显示位置
    label1.Text = "主机名称:" + System.Net.Dns.GetHostName ( ) ;
    // 显示本机的计算机名称
    label2.Text = "IP 地址:" + getIPAddress ( ) ;
    // 显示本机的拨号动态分配IP地址
    label1.Size = new System.Drawing.Size ( 200 , 50 ) ;
    label2.Size = new System.Drawing.Size ( 200 , 80 ) ;
    //设定标签的大小
    label1.TabIndex = 0 ;
    label2.TabIndex = 1 ;
    label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter ;
    label2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter ;
    // 设定标签的对齐方式
    this.Text = "?
    public Form3 ( )
    {
    // 建立标签并且初始化
    // 设定窗体的边界类型
    this.ForeColor = System.Drawing.SystemColors.Desktop ;
    this.Font = new System.Drawing.Font ( "宋体" , 10 , System.Drawing.
    FontStyle
    .Bold ) ;
    // 设定字体、大小就字体的式样
    this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide ;
    this.ClientSize = new System.Drawing.Size ( 250 , 250 ) ;
    //把标签加到窗体中
    this.Controls.Add ( this.label1 ) ;
    this.Controls.Add ( this.label2 ) ;
    }
    private static string getIPAddress ( )
    {
    System.Net.IPAddress addr;
    // 获得拨号动态分配IP地址
    addr = new System.Net.IPAddress ( Dns.GetHostByName ( Dns.GetHostName  
    ( ) )
    .AddressList [1].Address ) ;
    return addr.ToString ( ) ;
    }
    }
    编译完成后,执行可得到如下运行界面:
    图02:读取计算机名称和动态IP地址
    // 设定窗体的边界类型
    this.ForeColor = System.Drawing.SystemColors.Desktop ;
    this.Font = new System.Drawing.Font ( "宋体" , 10 , System.Drawing.
    FontStyle
    .Bold ) ;
    // 设定字体、大小就字体的式样
    this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide ;
    this.ClientSize = new System.Drawing.Size ( 250 , 250 ) ;
    //把标签加到窗体中
    this.Controls.Add ( this.label1 ) ;
    this.Controls.Add ( this.label2 ) ;
    }
    private static string getIPAddress ( )
    {
    System.Net.IPAddress addr;
    // 获得拨号动态分配IP地址
    addr = new System.Net.IPAddress ( Dns.GetHostByName ( Dns.GetHostName  
    ( ) )
    .AddressList [1].Address ) ;
    return addr.ToString ( ) ;
    }
    }
    编译完成后,执行可得到如下运行界面:
    图02:读取计算机名称和动态IP地址
    六.总结:
    本文是通过二个例子来读出机器的计算机名称和不同的IP地址,通过以上二个例子
    ,我
    们可以看到如果机器有三个或者更多的IP地址,我们也可以通过设定AddressList
    的不同
    值来得到机器不同的IP地址。
    在名称空间System.Net中还提供了很多面向网络编程的的类,这些类的功能是十分
    巨大
    的,灵活运用这些类,可以开发出很多功能强大的网络应用程序。

    --
    如果我曾伤了你,就让我说声对不起
    虽然想要再见你,也只能在梦里
    想起你离去时的背影,你似乎也在哭泣
    究竟有什么原因,非要我们分隔两地
    在我的心里只有一句我爱你
    就算全世界都没有人愿意听

    ※ 来源:·飘渺水云间 Freecity.dhs.org·[FROM: xixixi]

    --

    ※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.214.13]
    上一篇
    返回上一页
    回到目录
    回到页首
    下一篇


       收藏   分享  
    顶(0)
      




    ----------------------------------------------

    -----------------------------------------------

    第十二章第一节《用ROR创建面向资源的服务》
    第十二章第二节《用Restlet创建面向资源的服务》
    第三章《REST式服务有什么不同》
    InfoQ SOA首席编辑胡键评《RESTful Web Services中文版》
    [InfoQ文章]解答有关REST的十点疑惑

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2004/11/9 2:25:00
     
     GoogleAdSense
      
      
      等级:大一新生
      文章:1
      积分:50
      门派:无门无派
      院校:未填写
      注册:2007-01-01
    给Google AdSense发送一个短消息 把Google AdSense加入好友 查看Google AdSense的个人资料 搜索Google AdSense在『 Dot NET,C#,ASP,VB 』的所有贴子 点击这里发送电邮给Google AdSense  访问Google AdSense的主页 引用回复这个贴子 回复这个贴子 查看Google AdSense的博客广告
    2025/3/11 7:03:36

    本主题贴数1,分页: [1]

    管理选项修改tag | 锁定 | 解锁 | 提升 | 删除 | 移动 | 固顶 | 总固顶 | 奖励 | 惩罚 | 发布公告
    W3C Contributing Supporter! W 3 C h i n a ( since 2003 ) 旗 下 站 点
    苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
    64.453ms