Java网络编程 --– 套接字的半关闭
半关闭(half-close):半关闭提供这样一种通信方式,套接字的一端可以终止其输出,同时仍然可以接受来自连接的另一端发送过来的数据。(类似于TCP的四次挥手的过程)
半关闭是通过关闭一个套接字(浏览器)的输出流来表示发送给服务器(套接字一端)的数据已经结束了,但是必须保持浏览器端的输入流处于打开状态。图示:
半关闭意味着套接字是没有完全关闭的,一旦套接字完全关闭,那么与服务器的连接将立刻断开,也就无法接受服务器发送过来的数据啦!
半关闭的应用场景:一站式服务情况下,比如说HTTP请求服务。
Java对半关闭服务的支持(客户端代码演示):
Socket socket = new Socket(host,port);
Scanner scan = newScaner(socket.getInputStream());
PrintWriter out = newPrintWriter(socket.getOutputStream());
out.print(“ ”);
out.flush();// 将数据推出
socket.shutdownOutput();// 关闭输出流
while(scan.hasNextLine() != null){
// do something
}
socket.close(); // 关闭套接字
java API 中的相关方法:
java.net.Socket 中
voidshutdownOutput();
voidshutdownInput();
booleanisOutputShutdown();
boolean isInputShutdown();