1: //BufferedWriter bufOut =
//new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
PrintWriter out = new PrintWriter(s.getOutputStream(),true);//上面那步怎么演变成这一步了?
① PrintWriter:向文本输出流打印对象的格式化表示形式,它的底层是个PrintStream,也就是字节流所有可以接收
OutputStream,就是说它能自动把字符流转换成字节流
②而BufferddWriter,底层还是一个字符流,无法将字符流转换成字节流,所以需要OutputStreamWriter转换
③PrintWriter是java平台为我们提供的一个非常好的格式化输出类,非常方便,所以老师就用现成的好东西了,哈哈,
何必非要自己动手做?
2、 BufferedReader bufIn =
new BufferedReader(new InputStreamReader(s.getInputStream()));//为什么要用s调用getInputStream呢 ?
①这里的s值的是一个Socket,Socket其实内部包装了一个InputStream和一个outputStream,用于下载和上传。
② 当你要下载数据时,就到InputStream流里面读取就可以了。
当你要上传数据时,就把数据写入OutputStream流中了
③如果把Socket比作一条网线,那么InputStream就是其中的下载线,而OutputStream就是上传线了。
PrintWriter out = new PrintWriter(s.getOutputStream(),true);//上面那步怎么演变成这一步了?
//这地方是这样的:将s.getOutputStream()得到的输出流用PrintWriter独享输出,true的意思是说刷新缓冲区,写一点刷新一点
BufferedReader bufIn =
new BufferedReader(new InputStreamReader(s.getInputStream()));//为什么要用s调用getInputStream呢 ?
s是表示的是客户端,里面封装这InputStream和OutPutStream两个流对象,服务器可以通过客户端的刘对象获取里面的InputStream和OutPutStream,然后用客户端的InputStream和OutPutStream进行相应的解析
s.getInputStream():获取InputStream对象然后进行读取操作