网络工具类(一) 获取内网所有IP

1.获取所有内网IP(不包括本机IP)

网上有许多这方面的相关计算方法,比如通过枚举计算,但我个人认为这种方法并不好。好在有cmd的arp-a命令,

原理  调用cmd的arp-a命令 ,然后解析成需要的数据

静态类 LANIpAllTool  (public static class LANIpAllTool)

        /// <summary>
        ///     利用CMD命令获取局域网内所有的IP
        /// </summary>
        /// <returns></returns>
        public static string GetAll()
        {
            var str = RunCmd("arp -a");
            var regex = new Regex(
                @"\s*(([0-9]{0,3}[.]?){4}\s)\s*(([a-zA-Z0-9]{2}[-]?){6}\s)\s*([\u4e00-\u9fa5]{0,4}\s)",
                RegexOptions.IgnoreCase);
            var match = regex.Matches(str);
            return match.Cast<object>().Aggregate("", (current, ma) => current + ma.ToString());
        }


        /// <summary>
        ///     执行CMD语句
        /// </summary>
        /// <param name="cmd">要执行的CMD命令</param>
        public static string RunCmd(string cmd)
        {
            var pro = new Process
            {
                StartInfo =
                {
                    CreateNoWindow = true,
                    FileName = "cmd.exe",
                    UseShellExecute = false,
                    RedirectStandardError = true,
                    RedirectStandardInput = true,
                    RedirectStandardOutput = true
                }
            };
            pro.Start();
            pro.StandardInput.WriteLine(cmd);
            pro.StandardInput.WriteLine("exit");
            var outStr = pro.StandardOutput.ReadToEnd();
            pro.Close();
            return outStr;
        }

下面的方法是为第一个方法服务的

调用

        this.textBox2.Text = LANIpAllTool.RunCmd("arp -a");
        this.textBox3.Text= LANIpAllTool.GetAll();

效果 

显示结果,一个是未处理 的 数据 ,一个是处理后的数据

具体需要什么结构,可以在进行处理

2.获取本机IP

        /// <summary>
        /// 获取本机IP
        /// </summary>
        /// <returns></returns>
        public static string LocalIp()
        {
            var str=RunCmd("ipconfig");
            var regex = new Regex(@"\s*IPv4.*[:]\s*(([0-9]{1,3}[.]?){4})",RegexOptions.IgnoreCase);
            var match = regex.Matches(str);
            return (from object ma in match select Regex.Replace(ma.ToString(), @"(([.]\s)|\s|[\u4e00-\u9fa5]{0,}|[:]|[a-zA-Z]*[4]?|[IPv4])", "").Replace("IPv4:", "")).FirstOrDefault();
        }

注意:其中 如下代码 是调用上面的 RunCmd()方法

var str=RunCmd("ipconfig");




  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值