私はこの小さなテストソケット接続クラスを持っています:-
import java.net.Socket;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.IOException;
public class TestTelnet {
public static void main(String args[]) throws Exception {
Telnet telnet = new Telnet();
Socket socket = null ;
socket = new Socket("localhost", 23);
socket.setKeepAlive(true);
BufferedReader r = new BufferedReader(new InputStreamReader(socket.getInputStream()));
BufferedWriter w = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
System.out.println(r.readLine());
socket.close();
}
}
別のポート(SMTPの場合は25など)を使用すると完全に機能し、r.readLineのprintlnは見事に機能します。コマンドプロンプト(telnet localhost 23)を介してポート23に接続することもでき、次のメッセージが返されます。-
Ubuntu 8.10 my-laptopログイン:
しかし、Javaクラスを使用してポート23に接続しようとすると、readLineprintlnでハングします。なぜこれなのか誰か知っていますか?