如何使两个Android设备通过TCP进行通信

Lub*_*ben 22 connection android tcp nat

我们想在两个Android设备之间建立TCP/IP连接.目前我们认为如果我们将连接设备设置为设备会更简单.所以这两部手机之间没有服务器.

大多数时候(如果不是总是)一个人没有真正的IP地址(NAT等).这是创建TCP套接字的问题吗?我没有找到任何确切的信息.任何建议和意见将受到高度赞赏.

谢谢

Jér*_*nge 11

这是创建TCP套接字的问题吗?

答案是否定的,它并不是不可能的(除非NAT有一种不可预测的映射IP地址的方式).但是,实现起来并不简单.

简短的回答是,您总是需要一个具有公共IP地址的类似服务器的对等体,以促进位于NAT后面的对等体之间的初始通信.对等体连接到它.告知服务器它想要与B连接.服务器通知B.执行NAT行为分析,如果可能,A和B尝试通过预测其他 NAT 的下一个映射来相互打开TCP通信.如果一切顺利(通常是这样)A接触B,反之亦然.它们关闭其他连接尝试并与操作TCP连接通信.这种技术称为TCP的STUN.

现在,事情可能出错的原因更为复杂.如果你想了解更多,我写了一本名为Practical JXTA II的书,可以在Scribd在线阅读.有一章专门讨论NAT遍历.

希望这可以帮助.


Jon*_*ves 0

NAT 后面的一台设备不是问题。要求是:客户端必须可以访问服务器。

我正在使用 Apache Mina 来处理 TCP 连接。它确实让我的生活变得更轻松。它可以在客户端和服务器上使用。试一试...