Я пытаюсь подключиться к серверу telnet, но когда я подключаюсь к серверу telnet, работающему на порте 9999., но когда я запускаю этот код. он показывает приветственное сообщение, но тогда никакая команда не работает.Возможно подключиться к сокету telnet
public static void main(String[] args) {
FileOutputStream fos = null;
final String server = "erdos.dsm.fordham.edu";
final int port = 9999;
Socket sock = null;
PrintWriter out = null;
BufferedReader in = null;
try {
sock = new Socket(server,port);
sock.setKeepAlive(true);
out = new PrintWriter(sock.getOutputStream(),true);
in = new BufferedReader(new InputStreamReader(sock.getInputStream()));
} catch (IOException ex) {
Logger.getLogger(Hangman.class.getName()).log(Level.SEVERE, null, ex);
}
try {
System.out.println(in.readLine());
Scanner scanner = new Scanner(System.in);
String s = scanner.nextLine();
s = s.toUpperCase();
while(!s.equals("QUIT"))
{
out.print(s);
out.flush();
System.out.println(in.read());
s = scanner.nextLine();
}
System.out.println("Thanks for playing bye");
} catch (IOException ex) {
Logger.getLogger(Hangman.class.getName()).log(Level.SEVERE,null, ex);
}
}
благодаря она работает очень хорошо, но не читает всю строку, например, если я печатаю помочь Это будет просто вернуть первую строку –
Да. Я знаю, потому что между первой строкой и остальными есть строка. Вы закодировали серверную часть? –
Терминатор линии в Telnet - '\ r \ n', а не' \ n'. Вы не тестируете 'readLine()' return null, и тест для пустой строки кажется бессмысленным. – EJP