「コマンドなどを入力できるアプリにtelnetで接続する」とは、正確にはどういう意味ですか?
telnet と ssh はどちらも、リモート マシン (ほとんどの場合、コマンド シェルのインスタンス) で実行するアプリケーションを必要とするため、実際にはコマンドのトランスポート メカニズムのみを提供します。特に Telnet は、tcp 接続を介して一般的なテキスト コマンドを送信するために悪用される可能性があります (実際に悪用されています)。コマンドを使用して Web をブラウズし、telnet www.target-domain.com 80
すべての http プロトコルを手動で入力できますが、お勧めしません。ssh もまったく同じですが、ssl/tls セキュリティがチャネルに追加されます。
したがって、あなたが望むのは次のようなものだと思います:
import java.io.*;
import java.net.*;
public class telnettest {
public static void main(String[] args) throws IOException {
Socket echoSocket = null;
PrintWriter out = null;
BufferedReader in = null;
try {
//Open a listening socket on port 8022 and wait for a connection
echoSocket = new ServerSocket(8022).accept();
System.out.println("connection established");
//Get input and output streams
out = new PrintWriter(echoSocket.getOutputStream(), true);
in = new BufferedReader(new InputStreamReader(
echoSocket.getInputStream()));
} catch (IOException e) {
System.err.println("Couldn't get I/O for "
+ "the connection");
System.exit(1);
}
//Read lines from the input stream (corresponding to user commands)
String userInput;
while ((userInput = in.readLine()) != null) {
//For each line entered, just output it to both remote and local terminal
out.println("echo: " + userInput);
System.out.println("echo: " + userInput);
}
//Clean up connections.
out.close();
in.close();
echoSocket.close();
}
}
これは、このチュートリアルの例を恥知らずに編集したものです。
ssh ログインについてはよくわかりませんが、ServerSocket の代わりに javax.net.ssl.SSLServerSocket を使用してアクセスできると思われます。
残っているのは、単にユーザーの顔にそれを投げ返すのではなく、ユーザー入力に対して賢明なことを行うことです。コマンドとそのパラメーターの量に応じて、コマンドを自分で解析するか、それを処理するライブラリを見つけることができます。