我创建了一个非常简单的Java程序,在开放端口java.net.ServerSocket
上创建x
,并使用accept ()
等待连接。我想使用telnet
/ ssh
通过端口x
连接到程序,以便我可以与所述程序通信。我的问题是在我连接到端口后,我的程序识别并接受连接,但ssh
冻结。我假设这是因为我没有适当的回应。我只想知道接下来应该做些什么。我该如何回应?
我可以使用库,但我想了解接下来会发生什么。但是,我仍然非常感谢有人告诉我是否真的应该使用图书馆。此外,我知道一些基本的网络概念,如TCP / IP,OSI,数据被包装,发送,然后解包,但这是我的网络知识的范围。
答案 0 :(得分:2)
SSH是一种非常具体的协议,涉及加密。你是不是只想telnet到套接字,默认情况下使用纯文本?
答案 1 :(得分:1)
除非你是加密和网络的天才,否则我怀疑你是否可以实现SSH服务器。我不知道你的确切要求是什么,但你可以看看这个:http://www.sshtools.com/en/maverick-sshd/这是JAVA中的一个sshd(但我没有亲自使用它,所以不能告诉你太多)
答案 2 :(得分:1)
ssh
对于您想要实现的目标来说可能过于复杂。它会冻结,因为它等待来自您的服务器的响应,它可能永远不会得到。 ssh
还复杂了您可能不希望为简单服务器实现的安全要求。
为什么不从客户端开始使用非常基本的东西,就像在tutorial中一样。从那以后,您仍然可以根据需要添加功能和功能。
编辑:
使用telnet发送命令:
客户端:
只需发出telnet host port
,即可在其中输入say Hello World
,然后按Enter键。
服务器端:
您从客户端收到一个字节流。首先,您必须将其解析为String。然后,您可以通过查找第一个空白字符来简单地拆分此String。之前的字符串是你的'命令',空白之后的部分是你的'有效载荷'。
在这个例子中,这会给你'say'作为命令,'Hello World'作为有效载荷。
然后将'command'与已知命令列表进行比较,根据您拥有的命令,您可以将有效负载作为参数执行。