【发布时间】:2010-09-02 08:38:13
【问题描述】:
我正在为 Android 制作一个 IM 应用程序。 该应用程序由服务器和客户端组成,两者都驻留在 android 上。 启动时,应用程序向网络服务器注册。 如果客户端想要向 NAT 路由器后面的服务器发送 IM,该怎么做? 我听说过 stun4j 和 jstun,但没有发现它们在 android 中的使用示例。 谢谢!
【问题讨论】:
标签: android messaging traversal nat instant
我正在为 Android 制作一个 IM 应用程序。 该应用程序由服务器和客户端组成,两者都驻留在 android 上。 启动时,应用程序向网络服务器注册。 如果客户端想要向 NAT 路由器后面的服务器发送 IM,该怎么做? 我听说过 stun4j 和 jstun,但没有发现它们在 android 中的使用示例。 谢谢!
【问题讨论】:
标签: android messaging traversal nat instant
为什么服务器必须在设备上?
这似乎无效,android 作为典型的客户端设备运行得最好。
制作即时消息应用非常简单。
只需让客户端向网络服务器发送消息并存储它们。
让其他客户端等待或轮询来自网络服务器的消息。
无论互联网连接类型如何,这都能正常工作。
如果您坚持在设备上安装服务器,我认为您将获得的最接近的解决方案是使用某种 upnp 库。
使用 upnp,您可以告诉路由器自动为您的服务器端口设置 NAT。
这不适用于在路由器中禁用了 upnp 的用户。
【讨论】:
stun4j 不是适用于所有 NAT 的通用解决方案。
最简单和最可靠的解决方案是通过您的外部网络服务器发送具有已知地址的消息。
【讨论】: