Java/或 Android IP 隧道

标签 java android ssh tunnel

我们需要将云服务器上的端口隧道连接到 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/

相关文章:

java - JTextField,将插入符号位置设置为输入结尾而不突出显示整个字符串

java - 使用 Hibernate 时如何在 boolean 属性中插入空值?

java - 通过套接字发送 System.out

Android:菜单和后退按钮停止工作

java - 如何通过 Java 在 SSH 中运行多个命令?

java - 如何允许用户导航到文件系统?

java - Android 中 import utility.* 和 only need fun 有什么区别?

android - Eclipse PhoneGap HTML div 链接不起作用

curl - 如何通过 github API 使用 ssh 身份验证?

ssh - 恢复中断的 screen session 时重新连接 SSH 代理转发