Я пытаюсь следовать учебнику в книге, чтобы создать простую программу, использующую объект ServerSocket
.Программа просто пытается напечатать простое сообщение для клиента и может отобразить все, что вводит клиент. Я знаю, что порт, который я использую, открыт, так как я проверил активность порта, используя lsof -i:8189
, который возвращает тот факт, что яесть программа прослушивания в порту.Я также теперь должен подключить порт к программе, так как с момента закрытия терминала моя программа делает то, что должна.Закрывает сокет и завершает работу.
Проблема здесь в том, что когда я тестирую свою программу с использованием ssh, ничего не появляется, порт просто активен, а то, что предполагается выводить, - нет.Мой код здесь:
public class tutorial {
public static void main(String[] args) throws IOException {
try(ServerSocket s = new ServerSocket(8189)) {
try(Socket incoming = s.accept()) {
InputStream inStream = incoming.getInputStream();
OutputStream outStream = incoming.getOutputStream();
try(Scanner in = new Scanner(inStream, "UTF-8")) {
PrintWriter out = new PrintWriter(new OutputStreamWriter(outStream, "UTF-8"), true);
out.println("Hey dude");
boolean done = false;
while(!done && in.hasNextLine()) {
String line = in.nextLine();
out.println("The line you typed is: " + line);
if(line.trim().equals("BYE")) {
done = true;
}
}
}
}
}
}
}
При выполнении этого я не получаю никаких исключений или проблем.Я проверяю это с помощью команды в этой форме: ssh -p 8189 username@localhost
.После этого ничего не происходит, как следует, но порт и сокет подключены.Что я сделал не так?Код неправильный для начала?Или я проверяю это неправильно?Короткое замечание: у меня в этой книге для этого используется telnet, но Mac поставляется только с предустановленным ssh, поэтому сейчас я пытаюсь сделать это с ssh.