【转】C#得到局域网内所有主机名,IP地址,MAC地址


             private void btnCheck_Click(object sender, EventArgs e)
             {
                   string ipAddress = this.cboBoxIp.Text.Trim();
                   Regex rgx = new Regex(@"^([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(.([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])){3}$");
                   if (rgx.IsMatch(ipAddress))
                   {
                         this.labelIpResult.Text = GetName(ipAddress);
                         this.labelMacResult.Text = GetMacAddress(ipAddress);
                   }
                   else
                   {
                         this.labelIpResult.Text = "IP address is not valid.";
                         this.labelMacResult.Text = "No mac result";
                   }
             }

             /// <summary>
             /// 得到所有局域网内机器名
             /// </summary>
             private void GetAllLocalMachineName()
             {
                   System.Diagnostics.ProcessStartInfo prcssStrtInfo = new System.Diagnostics.ProcessStartInfo();
                   prcssStrtInfo.FileName = @"C:windowssystem32cmd.exe";
                   prcssStrtInfo.Arguments = @"/c net view > F:\LanMachineName.txt"; // 将所有局域网机器名输出到文本文件
                   prcssStrtInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
                   System.Diagnostics.Process.Start(prcssStrtInfo);
             }

             /// <summary>
             /// 通过Ip地址获得主机名
             /// </summary>
             /// <param name="IpAddress"></param>
             /// <returns></returns>
             private string GetName(string IpAddress)//获取指定IP的计算机名称
             {
                   string name="";
                   try
                   {
                         IPHostEntry ipHstEntry = Dns.GetHostByAddress(IpAddress);//传递IP地址
                         //IPHostEntry ipHstEntry = Dns.GetHostEntry(IpAddress);
                         name = ipHstEntry.HostName.ToString();//取得主机名
                   }
                   catch (Exception e)
                   {
                         name = e.Message;
                   }
                   return name;
             }

             /// <summary>
             /// 通过Ip得到MAC地址
             /// </summary>
             /// <param name="IpAddress"></param>
             /// <returns></returns>
             private string GetMacAddress(string IpAddress)//得到指定IP的MAC地址
             {
                   string macAddress = "";
                   Int32 ldest = 0;
                   try
                   {
                         ldest = inet_addr(IpAddress);
                   }
                   catch (Exception iperr)
                   {
                         MessageBox.Show(iperr.Message);
                   }
                   Int64 macinfo = new Int64();
                   Int32 len = 6;
                   try
                   {
                         int res = SendARP(ldest, 0, ref macinfo, ref len);
                   }
                   catch (Exception err)
                   {
                         //      throw new Exception("在解析MAC地址过程发生了错误!"); 
                         MessageBox.Show(err.Message);
                   }
                   string originalMACAddress = macinfo.ToString("X4");
                   if (originalMACAddress != "0000" && originalMACAddress.Length == 12)
                   { //合法MAC地址 
                         string mac1, mac2, mac3, mac4, mac5, mac6;
                         mac1 = originalMACAddress.Substring(10, 2);
                         mac2 = originalMACAddress.Substring(8, 2);
                         mac3 = originalMACAddress.Substring(6, 2);
                         mac4 = originalMACAddress.Substring(4, 2);
                         mac5 = originalMACAddress.Substring(2, 2);
                         mac6 = originalMACAddress.Substring(0, 2);
                         macAddress = mac1 + ":" + mac2 + ":" + mac3 + ":" + mac4 + ":" + mac5 + ":" + mac6;
                         //canPing = true;
                   }
                   else
                   {
                         macAddress = "无法探测到MAC地址";
                         //canPing = false;
                   }
                   return macAddress;
             }
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值