黑马程序员技术交流社区
标题:
网络编程客户端,流的关闭操作
[打印本页]
作者:
紫幻随影-缪
时间:
2014-4-20 19:26
标题:
网络编程客户端,流的关闭操作
本帖最后由 紫幻随影-缪 于 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();
}
}
作者:
月光海
时间:
2014-4-20 20:40
BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
//定义一个流接收服务器端反馈的数据
BufferedReader brServer=new BufferedReader(new InputStreamReader(s.getInputStream()));
复制代码
看这两句话,这两个流是从Socket流中获取的,当Socket建立成功后就有了一个Socket流,里面有读取流,有写入流,你下面已经对Socket流进行关闭,自然这样两个获取的流也会被关闭,因此,就不用关了
作者:
の放下执著
时间:
2014-4-20 21:00
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));这个流是键盘录入,字节流转向字符流,流向:键盘--->内存。
BufferedReader brServer=new BufferedReader(new InputStreamReader(s.getInputStream()));这个是socket流的输入流,流向:服务器端--->客户端。
其实流,就像水管,想要关水时,我们一般都是在水的流入端关闭,总不能在水的输出端把水管给堵住吧;流也一样,一般在数据的流入端关闭,而这里是流数据的接收端。
个人理解,嘿嘿!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2