【发布时间】:2015-08-18 01:40:06
【问题描述】:
我正在开发一个向其他手机发送消息的应用程序。在某种程度上有点像聊天信使。 我的应用程序应该工作的方式是用户输入一个 IP 地址和一条消息,然后应用程序将消息发送到指定的 IP 地址。 我目前让服务器和客户端在同一个应用程序中工作。这样,任何电话都可以连接到任何其他电话,因为每个电话都有自己的独立服务器,可以通过设备的 IP 地址访问。但是,我无法连接到不在我的 LAN 上的 IP 地址。 我想知道如何让服务器接收来自未连接到我的 LAN 的设备的消息?
我阅读了有关端口转发的信息,这似乎是一个不错的解决方案,但安全风险并不令人鼓舞。我还在考虑使用公共 IP 地址(例如 Amazon 的 Web 服务器)来运行我的服务器,并且该 IP 地址可以从世界任何地方访问。唯一的问题是服务器如何知道将消息发送到哪个设备?
【问题讨论】:
-
如果来自客户端的 IP 地址是动态的,这可能很难甚至不可能实现。如果你的服务器有一个静态 IP 地址,你可以把它转过来,让客户端经常联系服务器,看看是否有消息在等待他们。
-
如果您希望有人在您的 LAN 中找到您,您将不得不公开某种联系信息并设置路由、NAT 和您已采取的任何其他安全/网络措施以让他们通过,没办法。
-
那么,端口转发是我唯一的选择,还是在 Android 上根本不可能?
标签: java android ip-address portforwarding