Android:NAT Traversal?

bgr*_*nks 10 java networking android p2p nat

在我看来较新的Android设备在NAT后面,那里的本地地址是内部的载体或LAN地址与公网地址是路由器或运营商分配的外部地址运行.

然而,使用NetworkInterface时,较新的电话不会像访问IP检测服务时那样返回相同的地址.

因此,通过直接P2P SocketChannel连接本身就会失败.

针对Android平台设计此问题是否有任何常见的解决方法?任何人都可以澄清导致这种类似NAT的安全问题的原因吗?

任何指向Java NAT遍历教程示例(不是论文或论文)的链接也会被视为有用(因为我不太确定如何在Java中实现它).

我当然也会接受任何人提供的任何其他解决方案!

Yus*_*f X 6

您将要触摸的几乎所有手机或PC都没有静态公共IP地址,因此需要NAT遍历.这不是因为设备; 运营商或ISP将路由器放在您的设备和公共互联网之间.根据您的应用程序,通常可以使用NAT遍历库,例如ice4jSTUNT.


Moi*_*nez 0

我已经成功地通过转发您在路由器连接期间使用的套接字来建立套接字。这对我有用。

更新

如果您使用 Windows (ipconfig),则通过 cmd.exe 找出您的 IP 地址;如果您使用 Linux (ifconfig),则通过终端会话找出您的 IP 地址。然后通过浏览器连接到它,应该有一个安全部分。转到端口转发并打开您在建立 ServerSocket 和 Socket 时使用的端口。使用 TCP 作为协议。请注意,这仅适用于您尝试从 WLAN 外部进行连接的情况。

  • 哦,只是端口转发?NAT 穿越的目的就是避免这种情况。 (3认同)