从局域网获取公网IP的实现

从局域网获取公网IP的实现

    从局域网获取公网IP,应该有很多种方法,比如直接进路由器看,开花生壳这样的服务,或者有一些网站提供测试你公网IP地址等等很多,但是去获取这个IP,都需要你手动去获取这个IP,这样很麻烦,我就在想,有没有用程序的方法去从内网获取公网IP???

    我是一个新手,所以首选就是google下,看看是否有这相关的资料,很不幸,这方面的资料不是很多!但是在搜索的过程中,找到了一条令人兴奋的信息,看到linux操作系统下面有一个text模式的浏览器lynx,可以直接在linux的命令行输入:

    lynx -source www.3322.org/dyndns/getip

    运行此命令能够获取到你所在局域网对外的公网IP(运行此命令的前提是你的linux系统有装lynx这个浏览器),我也在xp系统的浏览器的地址栏输入上述网页,原来是提供用户自己的公网IP,于是我就在想,我要是能够获取到www.3322.org/dyndns/getip的网页源代码,那样就可以获取到自己所在局域网的公网IP,其实lynx的做法也是这样,但是lynx的代码太过复杂,我于是就用了socket来获取网页源代码来实现从局域网获取公网IP,其源代码可以参考我的/开源代码/中的"从web服务器获取网页源代码的程序"中的代码.当然那个程序需要修改才能只获取IP,其他的部分省略掉.

    编译上述代码(编译加入参数-g是为了可以进行GDB调试):

     #gcc -g -o iesource iesource.c

     用GDB跟踪调试代码:

    #insight iesource

     Note:顺便提下insight是GDB的gui形式,是linux下进行应用程序调试的利器.

    GDB进行跟踪调试的好处就是知道你的程序是否会出现内存已出,寄存器的变化,变量值的变法是否正确.修正自己的代码后,就能得到在linux的console得到以下结果.

    http://www.3322.org/dyndns/getip
www.3322.org
  /dyndns/getip 
HTTP/1.1 200 OK
Server: nginx
Date: Wed, 17 Dec 2008 15:40:47 GMT
Content-Type: text/plain
Transfer-Encoding: chunked
Connection: close
 
c
*.*.*.*
 
0

Note:红色部分是需要自己输入的,我这里是www.3322.org/dyndns/getip.*.*.*.*这里显示的是你的公网的IP地址.成功了,但是输出中有一些其他的信息,所以我在那个代码里面进行了完善,只打印出了IP地址.

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值