我们需要将云服务器上的端口隧道连接到 Android 设备。现在,我们在 Android (Jsch) 上使用 SSH 客户端启动反向端口转发。这可行,但我们不需要/想要加密/身份验证的开销。
本质上,可以建立从客户端 (Android) 到云端服务器的简单 IP 隧道。
用谷歌搜索这个主题没有希望,所以我想我会在这里试一试,看看是否能找到任何线索。显然,我们不想自己从头开始构建它。
最佳答案
这实际上在 Java 中实现起来相当简单。设备上的隧道应用程序打开两个连接,一个到服务器,一个到设备上的服务。现在,如果您使用 Input-/OutputStreams(与 nio Channels 一样),您需要 2 个线程,每个线程都在其中一个 InputStreams 上读取,并将它们收到的所有内容写入相反的输出流。在服务器上,您将需要一个类似的过程,从 ServerSocket.accept 获取它的两个连接,并且需要能够找出哪个是隧道器,哪个是服务的客户端(即测试隧道协议(protocol)的 header 传入连接)。
如果您希望能够同时建立多个连接,这会变得有点复杂。如果您想避免打开多个隧道连接,则需要为此实现某种协议(protocol),以便能够将隧道数据包分派(dispatch)到设备上的多个连接。
关于Java/或 Android IP 隧道,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6158212/