.
TCP套接字中,有个showdownOutput()和showdownInput()两个方法
在老毕视频中:
Socket s = new Socket("192.168.1.254",10006);
BufferedReader bufr =
new BufferedReader(new FileReader("IPDemo.java"));
PrintWriter out = new PrintWriter(s.getOutputStream(),true);
String line = null;
while((line=bufr.readLine())!=null)
{
out.println(line);
}
s.shutdownOutput();//关闭客户端的输出流。相当于给流中加入一个结束标记-1
我想问一下客户端读取的是一个文件,而服务端中读取的是客户端读取的文件,又因为readLine()调用的是read()方法,
所以当客户端将文件读完时就无数据可读,就会返回-1,就向IO流中读取文件一样
而在Socket中,客户端读完文件不能返回-1呢?
答案:其实文件中是可以读到-1的,但是不能将-1传递给服务端,所以需要手动告知服务端输出流已经完毕,既加上showdownOutput
而close会同时关闭输入和输出流但不会加-1结束标志
shutdown可以单方向关闭流并且加上结束标志-1