新手问个简单问题,C#的winform如何获取通过“路由器”连网后的公网真实IP。

nicholsky 2008-08-01 12:34:09
用System.Net.Dns的一堆方法都只能获取普通ADSL连网后的公网IP,路由器连网后的公网IP全部为空,那有什么办法去获取呢?

除了用web的方法,有其它方法吗,在winform里面?请教一下大家,谢谢。
...全文
434 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
angelfee 2012-08-19
  • 打赏
  • 举报
回复
调命令行
tracert www.baidu.com
取第二行最后一串。
nicholsky 2008-08-02
  • 打赏
  • 举报
回复
谢谢,等下我去试下先,不管行不行都谢谢,结帐先了。
nicholsky 2008-08-01
  • 打赏
  • 举报
回复
不想用访问外部网页用正则获取IP的方法。

“用HttpWebRequest访问路由器的管理页面里面有公网IP”这个能不能用程序实现,得出IP的值为一个string??
家鸣 2008-08-01
  • 打赏
  • 举报
回复
用HttpWebRequest访问路由器的管理页面,里面应该有公网IP,或者访问外部可以帮你取得公网IP的网页, 然后正则表达式取IP。
家鸣 2008-08-01
  • 打赏
  • 举报
回复
 
//以D-Link DI-624+A为例:

private void postrequest()
{
string userName = "admin";
string password = "702";
CookieContainer webCookieContainer = new CookieContainer();
String url = "http://192.168.1.1/status.htm"; //包括IP的页面。
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
req.Method = "GET";
req.UserAgent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0;CIBA)";
req.CookieContainer = webCookieContainer;
req.KeepAlive = true;
req.Accept = "*/*";
req.PreAuthenticate = true;
CredentialCache myCache=new CredentialCache();
myCache.Add(new Uri("http://192.168.1.1"), "Basic", new NetworkCredential(userName, password));//添加Basic认证
req.Credentials = myCache;
HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
resp.Cookies = webCookieContainer.GetCookies(req.RequestUri);
StreamReader sr = new StreamReader(resp.GetResponseStream(), System.Text.Encoding.Default);
String line = sr.ReadToEnd();//这里就是网页内容了, 接下来用正则去分析就可。
sr.Close();
resp.Close();
}
nicholsky 2008-08-01
  • 打赏
  • 举报
回复
到外也找不到例子,怎样才能得到呢,访问网页或调用web什么也好,但别通过其它网站得到,继续请教。
nicholsky 2008-08-01
  • 打赏
  • 举报
回复
呵呵,我不是排斥访问网页,因为的确网页是常变的,没有一个网站是永远不变的,有小小变动就可能获取不了。

但你说的访问路由器的管理页面,去获取这个就可以,但有无有具体例子,路由要登陆的,我去找下例子。
家鸣 2008-08-01
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 nicholsky 的回复:]
引用 3 楼 dk385 的回复:
可以用程序实现。HttpWebRequest + 正则表达式


这个是不是指指定一个网页请求,然后返回页面内容进行正则截取?那不就是访问外部网页吗??

有没有具体例子(除了访问外部测IP网页)???
[/Quote]
不明白你为什么这么排斥访问网页,这是个简单的方法。
这里只是去访问路由器的管理页面,不算是外部网页。
nicholsky 2008-08-01
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 dk385 的回复:]
可以用程序实现。HttpWebRequest + 正则表达式
[/Quote]

这个是不是指指定一个网页请求,然后返回页面内容进行正则截取?那不就是访问外部网页吗??

有没有具体例子(除了访问外部测IP网页)???
virusswb 2008-08-01
  • 打赏
  • 举报
回复
是不是要抓包分析了
家鸣 2008-08-01
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 nicholsky 的回复:]
不想用访问外部网页用正则获取IP的方法。

“用HttpWebRequest访问路由器的管理页面里面有公网IP”这个能不能用程序实现,得出IP的值为一个string??
[/Quote]
可以用程序实现。HttpWebRequest + 正则表达式

110,534

社区成员

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

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

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