【发布时间】:2016-01-14 06:26:57
【问题描述】:
我一直在尝试设置一个允许在两个设备(服务器和客户端)之间进行通信的应用程序。我已经建立了连接,只要它们连接到同一个互联网源,就可以在两者之间发送消息。当我将设备连接到两个不同的来源时,我无法在两者之间建立连接。它通过输入您要连接的服务器的 IP 地址来工作。
例如,如果我的服务器设备连接到我的家庭 Wi-Fi,而我的客户端设备连接到同一个 Wi-Fi 路由器,则通信正常。但是,当我将服务器连接到 Wi-Fi 并将我的客户端连接到蜂窝数据(或不同的 Wi-Fi 路由器)时,客户端无法找到服务器。
从我所做的所有搜索中,我发现这是因为我的服务器绑定到我的本地主机。所以我的问题是,无论您连接到什么网络,我怎样才能让我的服务器可以从任何地方访问?
我使用本教程让我的服务器运行:
http://android-er.blogspot.com/2014/02/android-sercerclient-example-server.html
第一个评论是一个问题,询问为什么它只能在本地网络上运行,有人回答说您必须在路由器上设置端口转发。据我了解,这仅在服务器设备始终连接到同一路由器时才有效。我的应用程序不会出现这种情况。随着设备更改网络,服务器将拥有一个新的 IP 地址。无论服务器连接到哪个网络,我都希望始终可以访问此 IP 地址。
【问题讨论】:
-
谁能告诉我是否有可能让服务器在运行应用程序的每部手机上独立运行,但仍然可以在全球范围内访问?
标签: android sockets networking server portforwarding