Android TCP 通过互联网(非 LAN)进行通信。

标签 android sockets tcp android-emulator router

我正在创建一个应用程序来在两个 Android 之间建立通信 mobiles使用 TCP 套接字通过互联网。因此,我将主要使用两个 mobiles 的 IP 地址与我喜欢的应用程序端口号。

这可能吗?要创建自定义 TCP 端口并像在 LAN 中一样通过互联网进行通信?

到目前为止,我能够在 LAN 中的两个模拟器之间成功进行通信。但在模拟器的情况下,不可能通过互联网执行相同的操作,因为通常主机是 behind a router仅允许数据发送到端口 808080我不知道。当然,可以完成端口转发,但我不想弄脏它。
所以,
局域网内的模拟器连接是否保证mobile互联网连接? 因为 mobile with direct net connectivity只有单个IP地址(没有私有(private)和外部IP)并且没有路由器来阻止流量。

最佳答案

您听说过打洞技术吗?阅读有关此内容 - 也许会有帮助。 link我认为这就是 Skype 的工作原理。该技术需要另一个通信节点 - 两个客户端都可以访问的服务器,并且即使其中一个客户端位于 NAT 之后,它也有助于在两个客户端之间建立直接连接。

关于Android TCP 通过互联网(非 LAN)进行通信。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12520437/

相关文章:

android - TextView 可从线程操作

android - 在 Jetpack Compose 中重置可拖动项目的偏移动画

android - 在 google play (Android Market) 上上传屏幕截图时无法解析响应错误

java - 不应该将 SoLinger 设置为错误地切断此连接吗?

c - 当套接字关闭时,UDP 套接字上的选择不会结束 - 我做错了什么?

android - android端口号选择上的持久TCP连接?

javascript - 你能使现有的 Tcp 连接成为一个 Websocket 到客户端吗?

java - 打洞后未建立 TCP 连接

android - 错误 R.id.togglebutton1 等

c - 在接收缓冲区中累积数据,以防止 epoll_waiting 慢速连接时的忙等待