【问题标题】:Java / or Android IP tunnelJava/或Android IP隧道
【发布时间】:2011-05-27 22:13:54
【问题描述】:

我们需要通过隧道将云服务器上的端口连接到 Android 设备。现在,我们在 Android (Jsch) 上使用 SSH 客户端来启动反向端口转发。这可行,但我们不需要/不想要加密/身份验证的开销。

本质上,可以建立从客户端 (Android) 到云端服务器的简单 IP 隧道。

谷歌搜索这个主题并不乐观,所以我想我会在这里尝试一下,看看我是否能找到任何线索。显然我们不希望自己从头开始构建它。

【问题讨论】:

    标签: java android ssh tunnel


    【解决方案1】:

    这实际上在 Java 中实现起来相当简单。设备上的隧道应用程序打开两个连接,一个连接到服务器,一个连接到设备上的服务。现在,如果您使用 Input-/OutputStreams(与 nio 通道一样),您需要 2 个线程,每个线程都读取一个 InputStreams,并将它们收到的所有内容写入相反的输出流。在服务器上,您将需要一个类似的过程,从 ServerSocket.accept 获取两个连接,并且需要能够找出哪个是隧道程序,哪个是服务的客户端(即测试隧道协议的标头)传入连接)。

    如果您希望能够同时建立多个连接,这会变得有点复杂。如果您想避免打开多个隧道连接,则需要实现某种协议才能将隧道数据包分派到设备上的多个连接。

    【讨论】:

    • 感谢您的评论。是的,这就是我需要的。我一直在说“多路复用连接”......一个传入端口通过隧道连接到许多客户端。我将把它打开一段时间,看看我是否能得到任何关于如何实现它的好线索。我对这个话题肯定生疏了。
    • 我最终写了一个简化版本。我认为让它变得健壮和稳定,处理断开/重新连接等等是令人不安的方面。无论如何,谢谢。
    • 这似乎正是我所需要的:我正在尝试从 Internet 访问 LAN 上的设备,但由于某种原因,尽管端口转发,该设备仍拒绝接受通过 Internet 的连接。我希望能够通过 Android 设备建立隧道连接。我已经能够从 Internet 访问 Android 设备,但是我无法找到可以安装在 android 设备上的应用程序以透明地隧道连接到实际设备。上面的答案是一个可以编写的应用程序的想法,还是这样的应用程序已经存在?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多