获取本机公网IP

wangweicmon236 2009-09-07 10:55:46
有没有在不借助一些查询网站的基础上(例如:http://www.ikaka.com/ip/index.asp)获取本机公网IP的方法?
注:机器属于一个局域网,不是直接拨号的
...全文
572 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
qldsrx 2009-09-07
  • 打赏
  • 举报
回复
你不访问下外部,就不知道自己的公网IP,而访问外部最简单的就是访问查询IP的网站,你可以使用WebRequest访问下,然后截获返回的信息分析里面提供的你公网IP信息。
柳晛 2009-09-07
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 hack95 的回复:]
rout -print
[/Quote]

纠正一下 route print 不行..
好像还真得需要Internet来查询。
注册失败 2009-09-07
  • 打赏
  • 举报
回复
[Quote=引用楼主 wangweicmon236 的回复:]
有没有在不借助一些查询网站的基础上(例如:http://www.ikaka.com/ip/index.asp)获取本机公网IP的方法?
注:机器属于一个局域网,不是直接拨号的
[/Quote]

机器属于局域网,也就是说是通过网关代理上网
那你的机器从来就不会有公网IP,只有你的代理网关有公网IP
因此你现在不是要获取你自己机器的公网IP,而是代理网关出口的公网IP

我之所以写的是“代理网关出口”,那是因为你的代理网关可能也有好几层,你要获取的是出口的公网IP

然后你再仔细想想,只适用你的局域网,不借助外面帮助,能获取带代理网关出口的外网IP么?

详细的学习下网络基础知识吧
柳晛 2009-09-07
  • 打赏
  • 举报
回复
rout -print
lzsh0622 2009-09-07
  • 打赏
  • 举报
回复
只凭本机是无法获得本机的外部IP的,出不了网关
wangweicmon236 2009-09-07
  • 打赏
  • 举报
回复
麻烦楼上的说详细一点,谢谢
yqlx521 2009-09-07
  • 打赏
  • 举报
回复
用 sharppcap可以
fanglong168 2009-09-07
  • 打赏
  • 举报
回复
楼上的可以吗?
cndhqwfn 2009-09-07
  • 打赏
  • 举报
回复
关注
wiki14 2009-09-07
  • 打赏
  • 举报
回复
获取本机(网关)的外网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();
wuyi8808 2009-09-07
  • 打赏
  • 举报
回复
机器属于一个局域网,不是直接拨号的,则无法在不借助一些查询网站的基础上获取本机公网IP。
ppq886 2009-09-07
  • 打赏
  • 举报
回复
这个问题我也想知道啊,帮顶 嘿嘿
gudujianxiao 2009-09-07
  • 打赏
  • 举报
回复
up
24K純帥 2009-09-07
  • 打赏
  • 举报
回复
帮顶。。

110,561

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧