首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >BufferReader与BufferWriter实现socket通信注意事项

BufferReader与BufferWriter实现socket通信注意事项

作者头像
johnhuster的分享
发布于 2022-03-28 13:31:42
发布于 2022-03-28 13:31:42
5370
举报
文章被收录于专栏:johnhusterjohnhuster

java中可以使用BufferedReader 与BufferedWriter来辅助完成socket通信功能,但是使用中需要注意下面这个坑:

代码语言:javascript
复制
   BufferedReader   bufReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));  
    //用于发送返回信息,可以不需要装饰这么多io流使用缓冲流时发送数据要注意调用.flush()方法  
 BufferedWriter  bufWriter = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
    int nMsgLen = 0;
    String sMsgBody="";
    String str = StringUtils.strip(bufReader.readLine());  
  

bufReader.close();-----位置不对,这步调用将导致socket关闭,导致下面的bufWriter.write调用抛出异常

代码语言:javascript
复制
(java.net.SocketException: Socket closed)
       System.out.println("Client Socket Message:"+str);  
       bufWriter.write("Message Received"+str);  
       bufWriter.flush();   
       bufWriter.close();  
        socket.close();
  
       socket=null;

正确的使用方法:在完成所有write以及read后再分别调用BufferedReader类以及BufferedWriter类的close方法。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2015/08/15 ,如有侵权请联系 cloudcommunity@tencent.com 删除
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档