A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 紫幻随影-缪 中级黑马   /  2014-4-20 19:26  /  1295 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 紫幻随影-缪 于 2014-4-21 12:28 编辑

/*以下是网络编程,客户端的代码,今天在看视频时,跟着视频写的,我想问下在最后关闭流操作时,为什么bw和brServer这两个流不用关闭,请高手解释下原因!*/

import java.io.*;
import java.net.*;

public class Client {

        public static void main(String[] args) throws IOException {
                Socket s=new Socket("192.168.0.1",12345);
                //客户端从键盘读取数据
                BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
                BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
                //定义一个流接收服务器端反馈的数据
                BufferedReader brServer=new BufferedReader(new InputStreamReader(s.getInputStream()));
                //将数据录入到服务器端
                String line=null;
                while((line=br.readLine())!=null){
                        if("over".equals(line)){
                                break;
                        }
                        bw.write(line);
                        //读取服务器端的反馈数据
                        String serverText=brServer.readLine();
                        System.out.println("server:"+serverText);
                }
                br.close();
                s.close();
                //bw.close();
                //brServer.close();
        }
}



2 个回复

倒序浏览
  1. BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
  2.                 //定义一个流接收服务器端反馈的数据
  3.                 BufferedReader brServer=new BufferedReader(new InputStreamReader(s.getInputStream()));
复制代码
看这两句话,这两个流是从Socket流中获取的,当Socket建立成功后就有了一个Socket流,里面有读取流,有写入流,你下面已经对Socket流进行关闭,自然这样两个获取的流也会被关闭,因此,就不用关了
回复 使用道具 举报
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));这个流是键盘录入,字节流转向字符流,流向:键盘--->内存。
BufferedReader brServer=new BufferedReader(new InputStreamReader(s.getInputStream()));这个是socket流的输入流,流向:服务器端--->客户端。
其实流,就像水管,想要关水时,我们一般都是在水的流入端关闭,总不能在水的输出端把水管给堵住吧;流也一样,一般在数据的流入端关闭,而这里是流数据的接收端。
个人理解,嘿嘿!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马