路由器后面的android socket编程

约翰·史密斯 :

大家好,我有任何疑问或问题。我正在尝试在两个Android手机之间建立p2p连接。我让每个电话都连接到服务器,并获得了专用(192.168.1.1)和公用(76.123.288.22)IP以及它们连接到服务器的端口。当电话连接到服务器以打开具有特定端口的服务器插槽时,我发送响应。我还向另一部电话发送了开放套接字的公共IP和端口,但未连接。我在这里阅读了多个线程,如果电话或计算机都在两个不同的路由器后面,则无法进行p2p连接。我的问题是这是否正确,如果是,LogMeIn或其他p2p应用程序如何在不同的路由器后面工作?是编程错误还是网络架构不允许这样做?

fkl:

有几种技术可以做到这一点-STUNTURNICE等您可以阅读其中的每种内容,以及诸如Skype,gtalk(现在为Google Talk,2018年3月)之类的软件。其中还包括这些技术。

但是这里要了解的主要概念是

  1. 您需要一个可公开访问的IP,以便可以连接到它如果它在专用网络上的路由器后面,则需要在路由器上进行端口转发,即,您需要向该路由器添加规则,以将在特定端口上接收到的流量转发到路由器后面的服务器。在一定程度上,上述技术隐式地或通过涉及外部第三方服务器来实现。

  2. 您需要允许首先连接的计算机上的传入连接通常,除非添加例外,否则Windows或Linux防火墙会阻止所有传入连接。您的两个节点都可能需要这样做。

对于最后一部分,我没有在android上编程,因此不确定是否允许添加传入连接等规则。但是我确实知道gtalk有一个android客户端,并且gtalk使用XMPP,该XMPP在内部可以使用任何技术我在上面指出。因此,没有理由相信为什么Android手机无法做到这一点。

添加一些更有用的参考:

libjingle(更新了链接Mar 2018)是Google的开源库,可用于编写p2p应用程序,包括文本,音频和视频。

它似乎也在这里为android编译

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章