在 java 上打开 nat 后面的套接字

Open socket behind nat on java

我在 NAT 后面的 android 设备上有一个服务器套接字,我想从另一个设备连接到这个套接字。我知道,如何实现这一点是通过使用打孔,但我遇到了一些问题。它适用于我的移动运营商,但我遇到其他运营商的问题。一般的问题是不同的移动运营商有不同的 NAT 类型。有人有同样的问题吗?有哪些解决方案?

我们在实现 "push to mobile" 功能时都会遇到这种问题。 试图绕过 firewall/nat 是浪费时间,这个解决方案(如您所见)非常依赖于操作员。

常见的解决方案是使用 "fake" 推送解决方案,如长套接字轮询。

为了简单起见,我建议"websocket" 使用 Jetty。 它提供了一种获得 "similar" 常规套接字功能的方法,没有缺点。