问题描述:
在一个局域网中,内网的机子通过ADSL和路由器上公网,网关端口不允许对内网中电脑进行映射,如何通过编程实现,从内网中任意一台电脑探查出自己的公网IP? (操作系统为Windows)
禁止以下解决方式:
1)采用远程服务器方式,例如你可以开发一个程序,访问你的远程服务器,由远程服务器告诉你的公网IP;
2)借助WWW服务器,来显示你的公网IP;
3)程序要具有路由器无关性,也就是说禁止分析路由器的函数来实现。之所以禁止这个,是因为希望程序具有通用性,而每种路由器的函数库都不是完全一样的;
4)禁止采用Tracert www.XXXXX.com的方式实现,这是因为很多低级的路由器不支持tracert,导致程序不具有通用性。
请高手注意,以上四种方式是不允许的。我曾经试图通过类似Ping www.XXXXX.com的方式,获取数据包,然后分析数据包,从中找出公网IP,但是没有成功。

解决方案 »

  1.   

    操纵拨号机器,调用其ipconfig /all命令,循环分析得到结果来得到公网IP
      

  2.   

    To:MEFULEU(没有作不到,只有想不到)你这个方案是禁止的,因为拨号机器就是路由器,而不同的路由器其函数库是不同的,例如路由器TP-Link TL-R402M,是一款市场普及率很高的低端soho路由器,它不支持tracert等等基本的命令。当然可以找到办法操控这个型号的路由器,但是不通用,换了其他的路由器又不行了。
    依我看来,应该是分析特定的数据包可以达到目的,因为数据包里面包含有IP信息,但是我实现不了。