C#获取本机内网外网IP

using System.Net;

# region 获取内、外网Ip

/// <summary>
/// 获取本地ip地址,优先取内网ip
/// </summary>
public static String GetLocalIp()
{
    String[] Ips = GetLocalIpAddress();

    foreach (String ip in Ips) if (ip.StartsWith("10.80.")) return ip;
    foreach (String ip in Ips) if (ip.Contains(".")) return ip;

    return "127.0.0.1";
}

/// <summary>
/// 获取本地ip地址。多个ip
/// </summary>
public static String[] GetLocalIpAddress()
{
    string hostName = Dns.GetHostName();                    //获取主机名称
    IPAddress[] addresses = Dns.GetHostAddresses(hostName); //解析主机IP地址  

    string[] IP = new string[addresses.Length];             //转换为字符串形式
    for (int i = 0; i < addresses.Length; i++) IP[i] = addresses[i].ToString();

    return IP;
}

/// <summary>
/// 获取外网ip地址
/// </summary>
public static string GetExtenalIpAddress_0()
{
    string IP = "未获取到外网ip";
    try
    {
        //从网址中获取本机ip数据
        System.Net.WebClient client = new System.Net.WebClient();
        client.Encoding = System.Text.Encoding.Default;
        string str = client.DownloadString("http://1111.ip138.com/ic.asp");
        client.Dispose();

        //提取外网ip数据 [218.104.71.178]
        int i1 = str.IndexOf("["), i2 = str.IndexOf("]");
        IP = str.Substring(i1 + 1, i2 - 1 - i1);
    }
    catch (Exception) { }

    return IP;
}

/// <summary>
/// 获取外网ip地址
/// </summary>
public static string GetExtenalIpAddress()
{
    String url = "http://hijoyusers.joymeng.com:8100/test/getNameByOtherIp";
    string IP = "未获取到外网ip";
    try
    {
        //从网址中获取本机ip数据
        System.Net.WebClient client = new System.Net.WebClient();
        client.Encoding = System.Text.Encoding.Default;
        string str = client.DownloadString(url);
        client.Dispose();

        if (!str.Equals("")) IP = str;
        else IP = GetExtenalIpAddress_0();
    }
    catch (Exception) { }

    return IP;
}

# endregion
时间: 2024-10-12 18:33:45

C#获取本机内网外网IP的相关文章

C#获取本地IP地址,内网+外网方法

1 #region 获取内.外网Ip 2 3 /// <summary> 4 /// 获取本地ip地址,优先取内网ip 5 /// </summary> 6 public static String GetLocalIp() 7 { 8 String[] Ips = GetLocalIpAddress(); 9 10 foreach (String ip in Ips) if (ip.StartsWith("10.80.")) return ip; 11 for

如何使用单机单网卡实现公司内、外网访问

在我所将要实施的一个项目中,某公司内部有两套网络系统实现内.外网的物理隔离,员工访问内.外网时使用的双网卡隔离器来切换实现上不同的网络.而随着业务和科技的进步,用户需要布署一套桌面云系统,用桌面云来打造内.外网络,在前端使用云终端一体机来连接桌面云服务器登陆桌面访问.这样一来就会产生很多问题: 1.因用户前期在将要布署桌面云系统的每个云终端位置只布置了一根网线,不是象其它公司要使用内.外网络都是在每个终端前布两根网线来切换不同网络. 2.云终端一体机上也只有一个网口,无法实现双网口隔离访问内.外

双网卡,内网,外网同时上网的设置

网卡配置: ======== Wan: IP: 自动获取IP地址 LAN: IP: 10.203.168.222子网掩码:255.255.225.0默认网关: 空 注意:   内部网的网卡IP配好后,设网关设置为空(即不设网关)   只设IP地址和子网掩码 --------------------------------- 1. route delete 0.0.0.0 删除0.0.0.0这条路由,因为接了两个网段有那个0.0.0.0的路由, 会发生冲突,数据包不知道该往哪边发,即使偶尔能上网,

虚机中访问外网;NAT中的POSTROUTING是怎么搞的?

看下docker中是怎么配置的网络 在虚机中访问外网:设定了qemu,在主机上添加路由:sudo iptables -t nat -I POSTROUTING -s 192.168.1.110 -j SNAT --to-source 192.168.0.108 设置了这句话就可以访问外网了. 设置了两个虚拟机: tap0 (192.168.129.1) ---> tap1 (192,168.130.1) ---> 增加nat的NAT的表项设置: sudo iptables -t nat -I

vmware虚拟机网络配置(物理机能用ssh连接虚拟机, 虚拟机能共享物理机网卡上外网)仅主机模式,nat模式应该也可以

1.环境: 物理机:windows7 虚拟机:centos7  ...xx.xx.x 虚拟化软件:vmware 13 2.准备阶段: vmware安装centos操作系统(easy),网卡地址简单配置,虚拟网卡连接方式先设置为“仅主机模式”. 3.物理机配置 在物理机win7中, win+r,  services.msc,  找到windows firewall 服务,启动防火墙: 在物理机win7中, 打开“网络和共享设置”,适配器设置,如果物理机用的是无线网卡上网,就在“无线网络连接”选中属

win10内网外网智能访问

当电脑同时连接有线和WiFi时(有线连接为内网,WiFi为外网),会出现内网和外网内容无法同时访问的情况. 本方法实现内网和外网的同时访问. 第一步: 输入指令 “route print ” 查看路由表: 第二步: 输入“route delete 0.0.0.0” 删除默认路由: 第三步: 输入“route add 10.0.0.0 mask 255.0.0.0 10.1.9.1” 添加路由: 输入“route add 0.0.0.0 mask 0.0.0.0 192.168.199.1” 添加

如何获取本机内网和外网IP(windows+linux)

1:场景描述 在做Netty相关项目的时候,我们往往需要绑定本机的IP和端口号,如果我们把它写在配置文件中,那么我们每次换电脑运行或者部署到其他环境时候都需要修改配置文件.这样就会比较麻烦,如果我们把它做成智能的获取本机的IP,这样我们的代码的可移植性就提高了.下面就介绍一种在windows和linux下面可以智能获取我们本机的局域网IP和外网IP的方法,不妥之处还请大家多多指教. 2:解决方法以及代码 首先贴上获取IP的工具类 /** * Copyright (C) 2015 Raxtone

nginx反向代理下thinkphp、php获取不到正确的外网ip

在记录用户发送短信需要获取用户ip时,tp一直获取的是内网ip:10.10.10.10 tp框架获取ip方法:get_client_ip 1 /** 2 * 获取客户端IP地址 3 * @param integer $type 返回类型 0 返回IP地址 1 返回IPV4地址数字 4 * @param boolean $adv 是否进行高级模式获取(有可能被伪装) 5 * @return mixed 6 */ 7 function get_client_ip($type = 0,$adv=fal

配置windows路由表,使电脑同时连接内网外网方法

1.环境一(系统:windows xp,内网.外网不是同一类地址,内网地址固定): 外网:通过笔记本的无线网卡连接: 内网:通过笔记本的本地连接: 第一步,连接网线,配置本地连接地址,注意IP地址不要与其它在用ip冲突: 下图,本地连接配置10.9.1.189的内网地址. 外网地址,则由笔记本的无线网卡连接到路由器,自动获得的p地址,本机获得的IP地址为192.168.1.115. 现在测试,内网可以ping通其它任意主机,外网也连接,但打开浏览器,不能上网: 如果拔掉网线,外网就可以上网. 第