有没有在不借助一些查询网站的基础上(例如:http://www.ikaka.com/ip/index.asp)获取本机公网IP的方法?
注:机器属于一个局域网,不是直接拨号的

解决方案 »

  1.   

    获取本机(网关)的外网IP,在C#里面实现的方法,通常是遍历获取到的本机的IP地址,然后判断,不过这种方式只能取得独立拨号或具有独立公网IP的地址,对于局域网的方式,是取不到的,这种方式的代码大致如下:System.Net.IPHostEntry ips = System.Net.Dns.GetHostEntry(System.Net.Dns.GetHostName());
    foreach (System.Net.IPAddress ip in ips.AddressList)
    {
        Console.WriteLine(ip.ToString());
    }
    要获取本机出口的外网IP,实际是需要利用访问某个可以返回本机出口的外网IP的internet资源,例如: 本站的ip提供程序访问此IP提供程序,将只返回一个你的出口IP的字符串,使用起来是超简单的,代码如下:using (System.Net.WebClient wc = new System.Net.WebClient())
    {
        Console.WriteLine(wc.DownloadString("http://www.zu14.cn/ip/"));
    }Console.ReadLine();
      

  2.   


    机器属于局域网,也就是说是通过网关代理上网
    那你的机器从来就不会有公网IP,只有你的代理网关有公网IP
    因此你现在不是要获取你自己机器的公网IP,而是代理网关出口的公网IP我之所以写的是“代理网关出口”,那是因为你的代理网关可能也有好几层,你要获取的是出口的公网IP然后你再仔细想想,只适用你的局域网,不借助外面帮助,能获取带代理网关出口的外网IP么?详细的学习下网络基础知识吧
      

  3.   


    纠正一下 route print 不行..
    好像还真得需要Internet来查询。
      

  4.   

    你不访问下外部,就不知道自己的公网IP,而访问外部最简单的就是访问查询IP的网站,你可以使用WebRequest访问下,然后截获返回的信息分析里面提供的你公网IP信息。