直接连接2个或更多Android客户端

9
我希望能够通过P2P连接连接两个或更多的Android设备。据我了解,我可以在一个Wi-Fi网络下使用Wi-Fi Directhttps://developer.android.com/guide/topics/connectivity/wifip2p.html
但是我想要连接位于不同位置但可能具有一个IP地址(VPN或其他)的Android客户端。我该怎么做呢?
这是我的算法:
Client_1 register its name and current IP on Server
Client_2 register its name and current IP on Server
Client_1 request registred IP from Server by Client_2 name
Client_2 request registred IP from Server by Client_1 name
Client_1 send message directly to Client_2 IP

如果Client_1和Client_2具有相同的IP地址,或者客户端在NAT后面,则此算法将无法工作。

是否有可用的库以这种方式连接2个或多个Android设备?


您的Android设备在公共互联网上始终会被IPv4 NAT所限制。这意味着每个设备都需要发起对话,因此您将面临先有鸡还是先有蛋的问题。您可以使用具有公共IPv4地址的外部服务器,以便两者都可以连接,或者如果它们拥有全局IPv6地址,则可以使用它们。 - Ron Maupin
您可以使用SIP通信。安装一个SIP服务器和用户SIP客户端应用程序,如sipdroid、csipsimple等。 - Shiv Buyya
2个回答

1
你可以使用固定IP SIM卡来为个人目的进行设置。另一种选择是将你的安卓手机本地私有IP转换为公共IP,这可以通过更新No-IP应用程序完成,该应用程序将为您提供一个直接链接以与您拥有的公共IP通信。
我希望我的答案对你有所帮助。

0

你最好研究一下在手机网络连接中的NAT穿透。例如,在Stack Overflow上有几个讨论此问题的线程,比如Android 上的3G/4G无线数据连接UPnP NAT穿透Android:NAT穿透?

总之,最简单的解决方案是使用STUN来确定你的应用程序/设备是否NAT穿透,然后使用TURN或ICE尝试使用NAT穿透建立(不一定是直接)设备之间的连接。存在多个实现这些协议/方法的库,例如http://www.pjsip.org/,它具有Android支持,并且具有相当完善的文档以及所有提到的技术的示例应用程序。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接