android - 如何让两个android设备通过TCP进行通信

标签 android tcp connection nat

我们想在两个安卓设备之间建立 TCP/IP 连接。 现在我们认为如果我们将设备连接到设备会更简单。所以两部手机之间没有服务器。

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

谢谢

最佳答案

Is this a problem for creating a TCP socket?

答案是否定的,这并不意味着不可能(除非 NAT 具有不可预测的 IP 地址映射方式)。但是,要做到这一点并不容易。

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

现在,出现问题的原因更为复杂。如果您想了解更多信息,我已经写了一本名为 Practical JXTA II 的书,可以在 Scribd 在线阅读。有一章专门介绍 NAT 穿越。

希望这会有所帮助。

关于android - 如何让两个android设备通过TCP进行通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4526830/

相关文章:

android - 删除所有 recyclerview 项目后 TextView 将不会显示

Android:如何创建带有右侧可点击箭头的自定义 EditText

c# - 如何为数百个并发连接优化/设计 WCF?

c - 让 TCP 客户端搜索 TCP 服务器

php - 如何保持与数据库的连接打开

java - 停止窃取 ListView 焦点的按钮

android - 如何在 Eclipse ADT 中修复我的 AVD?

java - 如何在收到来自服务器的消息后将如此大的数据从客户端发送到服务器

PHP 连接到 4D 数据库

mysql - Node js mysql结束连接