socket.shutdownOutput()有什么作用?

qwuiop789 发布于 2015/05/05 22:12
阅读 2K+
收藏 0


package wangluo;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.Socket;
import java.net.UnknownHostException;



public class client extends Thread {
public static void main(String[] args) {



client y=new client();
y.start();


}
@Override
public void run(){
System.out.println("客户端已启动");
while(true){
try {
Socket socket=new Socket("127.0.0.1",8888);
OutputStream os=socket.getOutputStream();
InputStream is=socket.getInputStream();
BufferedWriter ol=new BufferedWriter(new OutputStreamWriter(os));
ol.write("客户端发送到服务端");
ol.flush();
socket.shutdownOutput();
BufferedReader op=new BufferedReader(new InputStreamReader(is));
Thread.sleep(1000);
String bu=null;
while(!((bu=op.readLine())==null)){
System.out.println("服务端发到客户端的数据为:"+bu);
}



op.close();
ol.close();





is.close();
os.close();







socket.close();



} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

}
}

不加这句代码,客户端输出不了给果:

客户端已启动
服务端发到客户端的数据为:welcome
服务端发到客户端的数据为:welcome
服务端发到客户端的数据为:welcome

加载中
0
Helloall
Helloall
禁用此套接字的输出流。对于 TCP 套接字,任何以前写入的数据都将被发送,并且后跟 TCP 的正常连接终止序列。 如果在套接字上调用 shutdownOutput() 后写入套接字输出流,则该流将抛出 IOException。 
返回顶部
顶部