java – 路由器后面的android套接字编程

嘿家伙,我有一个问题或问题.我想在两个 Android手机之间建立一个p2p连接.我将每部手机连接到我的服务器,我得到他们的私人(192.168.1.1)和公共(76.123.288.22)IP以及他们连接到我的服务器的端口.当手机连接到服务器以打开具有特定端口的服务器套接字时,我会发送响应.我还发送另一部手机的公共IP和开放式插座的端口,但它没有连接.我在这里读过多个线程,如果手机或计算机都在两个不同的路由器后面,就不可能进行p2p连接.我的问题是,如果这是真的,如果是这样,LogMeIn或其他p2p应用程序如何在不同的路由器后面工作?是编程错误还是网络架构不允许?

解决方法

有几种技术可以达到这个目的 – STUN,TURN,ICE等等.你可以阅读他们每个人和软件,如skype,gtalk(现在google talk Mar 2018)等.使用这些技术等.

但这里要理解的主要概念是,

>您需要一个可公开访问的IP,以便您可以连接到它.如果它位于专用网络上的路由器后面,那么您需要在路由器上进行端口转发,即您需要向该路由器添加规则,以将特定端口上收到的流量转发到路由器后面的服务器.在某种程度上,上述技术隐含地或通过涉及外部第三方服务器来实现这一点.
>您需要首先允许连接到的机器上的传入连接.除非添加了异常,否则Windows或Linux防火墙通常会阻止所有传入连接.这两个节点可能都需要这样做.

对于最后一部分,我不在Android上编程所以我不确定它是否允许为传入连接等添加规则但是我知道gtalk有一个用于android的客户端和gtalk使用XMPP在内部可以使用任何技术我在上面指出.所以没有理由相信为什么它不能为Android手机做.

添加一些更有用的参考:

libjingle(更新链接Mar 2018)是谷歌的一个开源库,可用于编写包括文本,音频和视频在内的p2p应用程序.

它似乎已经为Android以及here编译

以上是来客网为你收集整理的java – 路由器后面的android套接字编程全部内容,希望文章能够帮你解决java – 路由器后面的android套接字编程所遇到的程序开发问题。

如果觉得来客网网站内容还不错,欢迎将来客网网站推荐给程序员好友。