客户
Socket socket = new Socket("ip", 5555);
PrintStream out = new PrintStream(socket.getOutputStream());
out.println("Hello Server!");
out.close();
socket.close();
服务器
ServerSocket serverSocket = new ServerSocket(5555);
while (true) {
//keep listening
Socket socket = serverSocket.accept();
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream(), "UTF-8"));
String line = in.readLine();
System.out.println(line);
in.close();
socket.close();
}
如果忽略并发问题,关闭套接字连接的方法是否正确?
答案 0 :(得分:2)
如果忽略并发问题,是否可以正确关闭套接字连接?
是的,但如果您已经关闭了输出流,则无需关闭套接字。
如果客户端在发送数据后立即关闭套接字,那么当服务器尝试从流中读取数据时,是否会导致“socket is close”等异常?
没有。 '套接字已关闭'表示您关闭套接字然后继续使用它。只要客户端已经读取了服务器要发送的所有内容,客户端就可以关闭套接字:服务器将读取客户端发送的所有数据,然后在下次读取时获得流结束。