【问题标题】:Telnet/SSH to a Java `ServerSocket`Telnet/SSH 到 Java `ServerSocket`
【发布时间】:2011-11-04 10:40:01
【问题描述】:

我创建了一个非常简单的 Java 程序,它在一个开放端口 x 上创建一个 java.net.ServerSocket,并使用 accept () 等待连接。我想使用telnet/ssh 通过端口x 连接到程序,以便我可以与所述程序通信。我的问题是连接到端口后,我的程序识别并接受连接,但ssh 冻结。我假设这是因为我没有正确的回应。我只想知道接下来我应该做什么。我该如何回应?

我可以使用图书馆,但我想了解接下来应该做什么。但是,如果我真的应该使用图书馆,我仍然非常感谢有人告诉我。此外,我知道一些基本的网络概念,如 TCP/IP、OSI,以及数据被打包、发送、然后解包,但这就是我的网络知识的范围。

【问题讨论】:

    标签: android ssh telnet


    【解决方案1】:

    SSH 是一种非常特殊的协议,涉及加密。你不只是想远程登录到默认使用纯文本的套接字吗?

    【讨论】:

    • 我正在考虑。我将如何通过 telnet 向我的程序发送“say Hello world”命令?
    【解决方案2】:

    ssh 对于您想要实现的目标来说可能太复杂了。它冻结是因为它等待来自您的服务器的响应,它可能永远不会得到。 ssh 还具有复杂的安全要求,您可能不想为您的简单服务器实现这些要求。

    您为什么不从客户端的一些非常基本的东西开始,例如tutorial。从那时起,您仍然可以根据需要添加特性和功能。

    编辑:

    使用 telnet 发送命令:

    客户端:

    只需发出telnet host port,然后输入say Hello World,然后按Enter。

    服务器端:

    您从客户端收到字节流。首先,您必须将其解析为字符串。然后,您可以通过查找第一个空白字符来简单地拆分此字符串。前面的字符串是您的“命令”,空格后面的部分是您的“有效负载”。

    在示例中,这会将“say”作为命令,将“Hello World”作为有效负载。

    然后将“命令”与已知命令列表进行比较,然后根据您拥有的命令,您可以使用有效负载作为参数来执行它。

    【讨论】:

    • 谢谢,但我已经阅读了教程。我现在需要的是能够向我的程序发送命令。我现在想知道的是我如何应对?
    • 知道了。谢谢!顺便说一句,我尝试写入 telnet 的输入流(我的程序具有的套接字的输出流),但它从未打印任何内容。是否有我应该回复的特殊字符串,即echo {message}?另外,如果我的程序不在 localhost 中,我怎么知道要远程登录到哪个 IP?
    • 为了清楚起见,我打算在安卓上使用它。
    • telnet 会很高兴地打印您从服务器发送的任何内容,因此您应该已经看到了一些内容。如果没有,请尝试在服务器上flush 您的 OutputStream。我建议不要通过 IP,而是使用主机名。
    • 如google.com 主机名?因为我正在远程登录到安卓设备。
    【解决方案3】:

    除非您是密码学和网络方面的天才,否则我怀疑您能否实现 SSH 服务器。我不知道你的具体要求是什么,但你可以看看这个:http://www.sshtools.com/en/maverick-sshd/这是一个JAVA中的sshd(但我没有亲自使用过,所以不能告诉你太多)

    【讨论】:

    • 你好,拉维。我不是密码学天才,对网络也不太了解,所以我可能最终会使用图书馆。尽管如此,我还是想知道如何将消息发送到我的简单服务器,主要是出于好奇。
    猜你喜欢
    • 2015-01-21
    • 2012-07-17
    • 2011-07-22
    • 2012-02-06
    • 2012-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-22
    相关资源
    最近更新 更多