我想通过p2p连接连接2个或更多Android设备。据我了解,我可以在一个wifi网络https://developer.android.com/guide/topics/connectivity/wifip2p.html
下使用Wi-Fi Direct但我想连接位于不同地方但可能只有一个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设备?
答案 0 :(得分:1)
如果您想为个人目的进行设置,可以使用Fixed Ip Simcards。另一个选择是将您的Android手机本地私人IP转换为公共IP,这可以通过Update No-IP应用程序完成,这个应用程序将为您提供直接链接,以与您拥有的公共IP进行通信。
我希望我的答案对你有所帮助。
答案 1 :(得分:0)
您最好的选择是在蜂窝连接上查看NAT遍历。 Stack Overflow上有几个线程可以讨论这个问题,例如UPnP NAT Traversal for 3G/4G Wireless Data Connection on Android和Android: NAT Traversal?
总而言之,最简单的解决方案是使用STUN来确定您的应用程序/设备是否已被NAT,然后使用TURN或ICE尝试使用NAT遍历在您的设备之间建立(不一定是直接的)连接。存在多个实现这些协议/方法的库,例如http://www.pjsip.org/,它具有Android支持并且具有相当好的文档,包括所有提到的技术的示例应用程序。