直接连接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设备?

  • Android:如何获得当前设备的WiFi直接名称
  • 如何find通过Android的WiFi直接模式传输的文件的文件名?
  • 如何估计两个Android设备之间的距离? (蓝牙首选)
  • 是否有可能从程序中删除记忆的Wifi Direct组?
  • 客户/同行在Android平台上与wifi-direct进行通信
  • 如何在Wi-Fi Direct场景中获取每个设备的IP地址?
  • Android iOS直接通信(蓝牙)。 可能吗?
  • 如何使用Wi-Fi Direct在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,并且具有相当不错的文档,包括所有提到的技术的示例应用程序。