【问题标题】:How to make my device's IP address accessible from anywhere?如何使我的设备的 IP 地址可以从任何地方访问?
【发布时间】: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


【解决方案1】:

您正在侦听传入消息的“服务”需要公开 可寻址的IP地址。地址在下面列出的范围内 被称为私有,无法“全局”访问。它们对您的局域网是私有的。

192.168.0.0 - 192.168.255.255(65,536 个 IP 地址)
172.16.0.0 - 172.31.255.255(1,048,576 个 IP 地址)
10.0.0.0 - 10.255.255.255(16,777,216 个 IP 地址)

此外,您的“服务”IP 地址还可以位于 NAT 防火墙后面, 这意味着您的“服务”IP 地址似乎是公开的 并不真正公开。 NAT 是将 IP 转换为另一个 IP 地址的地方。 这通常发生在互联网服务提供商或电信网络运营商处。

他们解决这个难题的方法是拥有一个公共可寻址服务器 来自某个托管公司的某个地方,并使用它来路由您的消息。

每个移动客户端都可以连接到此服务器并获取一个标识符,该标识符可能与用户的电子邮件地址相关联。注册后,移动客户端可以要求服务器为该特定用户排队一些消息。

也可以使用 Google Cloud 消息传递作为传递机制,通过这种方式 可以唤醒移动客户端以从服务器收集消息。 或者消息甚至可以在推送消息中。

【讨论】:

    猜你喜欢
    • 2014-09-05
    • 2016-09-18
    • 2018-03-20
    • 2015-03-06
    • 2013-06-12
    • 1970-01-01
    • 1970-01-01
    • 2011-12-21
    • 1970-01-01
    相关资源
    最近更新 更多