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

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

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

最佳答案

实际上,这在Java中非常简单。设备上的Tunneler应用程序打开两个连接,一个连接到服务器,一个连接到设备上的服务。现在,如果您使用Input- / OutputStreams(如nio Channel所限制),则需要2个线程,每个线程在InputStream之一上读取并将它们接收到的所有内容都写到相反的输出流中。在服务器上,您将需要一个类似的过程,该过程从ServerSocket.accept获取两个连接,并且需要能够找出哪个是隧道传输器,以及哪个是服务客户端(即,在上测试隧道协议(protocol)的 header )传入连接)。

如果您希望能够同时建立多个连接,这将变得更加复杂。如果要避免打开多个隧道连接,则需要为此实施某种协议(protocol),以便能够将隧道数据包分派(dispatch)到设备上的多个连接。

关于java - Java/或Android IP隧道,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6158212/

10-13 09:25