如何在Winform中获取出本机对外的Ip,不是内网的Ip,请各位看看怎么弄呢

解决方案 »

  1.   

    自己没法直接获得,只能通过访问某个站点再取得IP。写一个简单的网站,只有1个页面,写2句简单代码:<%
        Response.Write(Request.ServerVariables("REMOTE_ADDR"))
        Response.End
    %>保存成 ip.asp然后用iis建一个网站,启动页面设成 ip.asp ,然后你通过外网访问时就会显示出你的外访IP。在winform程序里写上如下代码:
    public string GetIP()
    {
        WebClient web = new WebClient();
        string hostip = web.DownloadString("http://yourwwww.com.cn/ip.asp");
        return hostip;
    }
      

  2.   

    /// <summary>
            /// 获取用户IP地址
            /// </summary>
            /// <returns></returns>
            public static string GetIPAddress()
            {            string user_IP = string.Empty;
                if (System.Web.HttpContext.Current.Request.ServerVariables["HTTP_VIA"] != null)
                {
                    if (System.Web.HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] != null)
                    {
                        user_IP = System.Web.HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"].ToString();
                    }
                    else
                    {
                        user_IP = System.Web.HttpContext.Current.Request.UserHostAddress;
                    }
                }
                else
                {
                    user_IP = System.Web.HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"].ToString();
                }
                return user_IP;
            }
      

  3.   

    /// <summary>
            /// 获取用户IP地址
            /// </summary>
            /// <returns></returns>
            public static string GetIPAddress()
            {            string user_IP = string.Empty;
                if (System.Web.HttpContext.Current.Request.ServerVariables["HTTP_VIA"] != null)
                {
                    if (System.Web.HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] != null)
                    {
                        user_IP = System.Web.HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"].ToString();
                    }
                    else
                    {
                        user_IP = System.Web.HttpContext.Current.Request.UserHostAddress;
                    }
                }
                else
                {
                    user_IP = System.Web.HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"].ToString();
                }
                return user_IP;
            }
      

  4.   

    IPHostEntry oIPHost = Dns.GetHostEntry(Environment.MachineName);
                if (oIPHost.AddressList.Length > 0)
    {
    oIPHost.AddressList[]里面找非内网地址
    }
      

  5.   

    HttpContext.Current.Request.UserHostAddress
      

  6.   

    你弄一个 web服务器
    用ip访问 会先经过路由再转发回来 就可以知道路由的ip