使用具有动态IP地址的主机名从Android设备连接到localhost(不断更改)

时间:2013-04-12 14:51:25

标签: networking mobile tcp ip webpage

问题的背景:

我有一台计算机在WAMP服务器上运行本地网页。计算机已连接到无线连接。

我有一个安卓平板电脑连接到同一个无线网络。

目的(我想做什么):

我希望能够通过我的APP使用主机名访问WAMP服务器上的本地网页。

我已经做过什么:

我已经可以使用计算机的IP地址(http://192.168.x.x/Webpage_Name)从我的应用中寻址网页。但是,由于我的ip是动态的(不断变化),因此这种实现不起作用。如果我错了,请纠正我。

我的想法是使用编辑计算机的主机文件。但是,我的理解是主机文件是静态的,这意味着它无法将主机名解析为更改IP地址(它只存储一个IP地址及其相应的主机名)。此外,主机文件不会在Android设备上,因此Android设备将无法使用主机文件中指定的主机名连接到服务器。如果我错了,请纠正我。

我的第二个想法是使用DynamicDNS服务。但是,我唯一的问题是,如果我想要一个免费的第三方服务来提供DNS我的网页信息必须通过互联网。我希望这个网页保持本地化,所以我认为DNS不是一个选择。如果我错了,请纠正我。

我的第三个想法是首先通过应用程序在计算机和Android设备之间创建TCP连接。然后我将计算机的IP地址从计算机发送到Android设备。然后android设备可以使用发送的IP地址连接到本地服务器。现在我的理解是你需要ip地址和端口来创建android设备和计算机之间的TCP连接,这就是为什么我认为这个实现不起作用。由于我需要在此选项中硬编码IP地址以及问题仍然存在。

主要问题(我想知道你的意思):

有没有人知道解决这个问题的其他选择?如果我错误地理解了上面的一个选项(我已经尝试过的部分),你认为有办法使它们有效,请告诉我。

1 个答案:

答案 0 :(得分:0)

我找到了解决这个问题的方法。我在运行WAMP的计算机和移动设备之间创建了一个多播套接字客户端 - 服务器系统。计算机将表现为服务器,移动设备将表现为客户端。建立连接后,我在服务器端代码中获取计算机的IP地址。然后我通过组播套接字将IP地址作为字符串从计算机发送到客户端(移动设备)。然后,移动设备使用提供的IP地址为WAMP服务器上的指定网页创建正确的URL,并加载该URL。

请参阅此页面http://docs.oracle.com/javase/tutorial/networking/datagrams/broadcasting.html,了解服务器客户端系统的示例代码。