我正在尝试按照书中的教程进行操作,以制作一个利用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。