我正在尝试使用ServerSocket
创建一个套接字,然后向客户端写一条消息,而在另一个类中,我正在连接它并尝试阅读该消息。
首先,这是我的服务器类。
try {
ServerSocket sSocket = new ServerSocket(1300);
Socket socket = sSocket.accept();
PrintWriter pw = new PrintWriter(socket.getOutputStream(), true);
pw.println("Hello");
} catch (IOException e) {
e.printStackTrace();
}
如果我使用cmd连接到它,telnet localhost 1300
,它可以正常工作,但是当我使用java Socket
类时,它无法正常工作,
这是我的代码连接到它。
try {
Socket socket = new Socket("localhost", 1300);
InputStream istream = socket.getInputStream();
Scanner scanner1 = new Scanner(istream);
while (scanner1.hasNextLine()) {
String p = scanner1.nextLine();
System.out.println(p);
}
scanner1.close();
socket.close();
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
在上面的代码中,while
块没有被执行,它只是跳过我的程序,因此在控制台中没有打印消息。
为什么即使有一行要读取,也没有执行while循环?