zoukankan      html  css  js  c++  java
  • 获取本机IP_考虑多网卡的情况

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Diagnostics;
    using System.Text.RegularExpressions;
    
    namespace _09获取本机IP_考虑多网卡_
    {
        class Program
        {
            static void Main(string[] args)
            {
                Console.WriteLine(GetLocalIP());
    
                Console.ReadKey();
            }
    
            /// <summary>
            /// 获取当前使用的IP
            /// </summary>
            /// <returns></returns>
            public static string GetLocalIP()
            {
                string result = RunApp("route", "print", true);
                Match m = Regex.Match(result, @"0.0.0.0s+0.0.0.0s+(d+.d+.d+.d+)s+(d+.d+.d+.d+)");
                if (m.Success)
                {
                    return m.Groups[2].Value;
                }
                else
                {
                    try
                    {
                        System.Net.Sockets.TcpClient c = new System.Net.Sockets.TcpClient();
                        c.Connect("www.baidu.com", 80);
                        string ip = ((System.Net.IPEndPoint)c.Client.LocalEndPoint).Address.ToString();
                        c.Close();
                        return ip;
                    }
                    catch (Exception)
                    {
                        return null;
                    }
                }
            }
    
    
            /// <summary>
            /// 运行一个控制台程序并返回其输出参数。
            /// </summary>
            /// <param name="filename">程序名</param>
            /// <param name="arguments">输入参数</param>
            /// <returns></returns>
            public static string RunApp(string filename, string arguments, bool recordLog)
            {
                try
                {
                    if (recordLog)
                    {
                        Trace.WriteLine(filename + " " + arguments);
                    }
                    Process proc = new Process();
                    proc.StartInfo.FileName = filename;
                    proc.StartInfo.CreateNoWindow = true;
                    proc.StartInfo.Arguments = arguments;
                    proc.StartInfo.RedirectStandardOutput = true;
                    proc.StartInfo.UseShellExecute = false;
                    proc.Start();
    
                    using (System.IO.StreamReader sr = new System.IO.StreamReader(proc.StandardOutput.BaseStream, Encoding.Default))
                    {
                        string txt = sr.ReadToEnd();
                        sr.Close();
                        if (recordLog)
                        {
                            Trace.WriteLine(txt);
                        }
                        if (!proc.HasExited)
                        {
                            proc.Kill();
                        }
                        return txt;
                    }
                }
                catch (Exception ex)
                {
                    Trace.WriteLine(ex);
                    return ex.Message;
                }
            }
        }
    }
    

      

  • 相关阅读:
    HDU 2444 The Accomodation of Students (判断是否是二分图,然后求最大匹配)
    HDU 1045 Fire Net (二分匹配)
    Leangoo如何颠覆传统项目管理软件?
    团队协作神器:Leangoo
    Leangoo-让工作更简单
    leangoo 轻量级项目协作和列表管理平台
    团队协作中的“贵族”leangoo
    使用leangoo实现多泳道任务看板
    项目管理工具到底应该为谁服务?
    《精益创业实战》读书笔记
  • 原文地址:https://www.cnblogs.com/liqipeng/p/4576161.html
Copyright © 2011-2022 走看看