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

我想连接2个或更多的Android设备与P2P连接。 据我所知,我可以使用Wi-Fi直连在一个WiFinetworking下https://developer.android.com/guide/topics/connectivity/wifip2p.html

但我想连接位于不同地方,但可能与一个IP(VPN或什么)的Android客户端。 我怎样才能做到这一点?

这是我的algorithm

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,则此algorithm将不起作用。 或者如果客户端在NAT后面。

有没有一个现成的库,以这种方式连接2个或更多的Android设备?

Solutions Collecting From Web of "直接连接2个或更多Android客户端"

如果您想为个人目的进行设置,您可以使用固定IP Sim卡 。 另一个select是转换你的Android手机本地私人IP到公共IP,这可以通过更新无IP应用程序,这个应用程序会给你一个直接的链接,与公共IP你有。

我希望我的回答对你有所帮助。

你最好的select是查看NAT穿越蜂窝连接。 在Stack Overflow上有几个线程讨论了这个问题,例如Android和Android 上的3G / 4G无线数据连接的UPnP NAT Traversal :NAT穿越?

总结一下,最简单的解决scheme是使用STUN来确定您的应用程序/设备是否已经过NAT,然后使用TURN或ICE尝试使用NAT遍历在您的设备之间build立(不一定是直接的)连接。 有很多实现这些协议/方法的库,例如http://www.pjsip.org/ ,它支持Android,并且具有相当不错的文档,包括所有提到的技术的示例应用程序。