求大佬帮忙看一下怎么修改,c#,关于获取局域网ip和计算机名字

qq_41991060 2018-04-13 10:00:03
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Text.RegularExpressions;
using System.Net;



namespace WindowsFormsApplication18
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void btnCheck_Click(object sender, EventArgs e)
{


string ipAddress = this.comboBox1.Text.Trim();

String str = comboBox1.Text;//获取下拉框内容
labelIpResult.Text = str;//设置为label内容

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);

}
else
{
this.labelIpResult.Text = "IP 无效.";


}

}
//获取所有局域网机器名字
private void GetAllLocalMachineName()
{
System.Diagnostics.ProcessStartInfo prcssStrtInfo = new System.Diagnostics.ProcessStartInfo();
prcssStrtInfo.FileName = @"C:\windows\system32\cmd.exe";

prcssStrtInfo.Arguments = @"/c net view > E:\\LanMachineName.txt"; // 将所有局域网机器名输出到文本文件
prcssStrtInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
System.Diagnostics.Process.Start(prcssStrtInfo);

}
//通过ip获取主机名字

private string GetName(string IpAddress)
{
string name="";
try{
IPHostEntry ipHstEntry= Dns.GetHostByAddress(IpAddress);
name=ipHstEntry.HostName.ToString();//获取主机名字
}
catch(Exception e)
{
name=e.Message;

}
return name;


}

}
}
这运行下来一直无效,没有ip和机器名字
...全文
545 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
xian_wwq 2018-04-13
  • 打赏
  • 举报
回复
说下大概思路 1. 要获取局域网ip,最直接也是简单的方式是通过ping 根据自己机器的ip和网络掩码,计算出网络段,然后通过循环去ping每台机器。 能ping通也就成功获取到了机器ip。 2.如果局域网有域控,那通过域控可以获取所有机器名称; 如果是工作组可能就不行了,可以通过nbtstat -A ip来获取, 但如果防火墙屏蔽了,或者在DNS中将NetBios 解析选项屏蔽,则无法获取到。
qq_41991060 2018-04-13
  • 打赏
  • 举报
回复
有没有大佬帮一下
易2017 2018-04-13
  • 打赏
  • 举报
回复
在窗体中调cmd,运行下面命令,重定向输出 COLOR 0A CLS @ECHO Off Title 查询局域网内在线电脑IP :send @ECHO off&setlocal enabledelayedexpansion ECHO 正在获取本机的IP地址,请稍等... for /f "tokens=3 skip=2 delims=: " %%i in ('nbtstat -n') do ( set "IP=%%i" set IP=!IP:~1,-1! ECHO 本机IP为:!IP! goto :next ) :next for /f "delims=. tokens=1,2,3,4" %%i in ("%IP%") do set range=%%i.%%j.%%k ECHO.&ECHO 正在获取本网段内的其它在线计算机名,请稍等... ECHO 本网段【%range%.*】内的计算机有: for /f "delims=" %%i in ('net view') do ( set "var=%%i" ::查询在线计算机名称 if "!var:~0,2!"=="\\" ( set "var=!var:~2!" ECHO !var! ping -n 1 !var!>nul )) ECHO. ECHO 正在获取本网段内的其它在线计算机IP,请稍等... for /f "skip=3 tokens=1,* delims= " %%i in ('arp -a') do ECHO IP: %%i 正在使用 ECHO. ECHO 查询完毕,按任意键退出... pause>nul 5 在记事本窗口中

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧