我有疑问或问题。我正在尝试在两部 Android 手机之间建立 p2p 连接。我将每部电话连接到我的服务器,并获取它们的私有 (192.168.1.1) 和公共 (76.123.288.22) IP 以及它们连接到我的服务器的端口。当电话连接到服务器以打开具有特定端口的服务器套接字时,我发送响应。我还向另一部电话发送了开放套接字的公共 IP 和端口,但它无法连接。我在这里阅读了多个线程,如果电话或计算机位于两个不同的路由器后面,则不可能进行 p2p 连接。我的问题是这是否属实,如果属实,LogMeIn 或其他 p2p 应用程序如何在不同路由器后面工作?是编程错误还是网络架构不允许?
有几种技术可以实现这一目标 -STUN, TURN, ICE仅举几例。您可以阅读其中的每一个内容,以及使用这些技术的软件,例如 Skype、gtalk(现在为 2018 年 3 月的 google talk)等。
但这里要理解的主要概念是,
你需要一个ip可公开访问,以便您可以连接到它。如果它位于专用网络上的路由器后面,那么您需要路由器上的端口转发即,您需要向该路由器添加一条规则,以将特定端口上收到的流量转发到路由器后面的服务器。在某种程度上,上述技术隐式地或通过涉及外部第三方服务器来实现这一点。
你需要允许传入连接在首先连接的机器上。通常,Windows 或 Linux 防火墙会阻止所有传入连接,除非添加例外。您的两个节点可能都需要这样做。
对于最后一部分,我不在android上编程,所以我不太确定它是否允许添加传入连接的规则等。但我确实知道gtalk有一个android客户端,并且gtalk使用XMPP,它内部可以使用任何技术我在上面指出了。所以没有理由相信为什么它不能在 Android 手机上完成。
添加一些更有用的参考:
libjingle(2018 年 3 月更新了链接)是 google 的一个开源库,可用于编写包括文本、音频和视频在内的 p2p 应用程序。
好像也是为android编译的here
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)