为了账号安全,请及时绑定邮箱和手机立即绑定

客户端输出流是否shutdownOutput()会不会对程序造成异常?

我在练习的时候客户端请求信息时若未调用shutdownOutput()方法,服务器读取数据时会出现阻塞现象,导致后面代码无法执行...... 有没有大神给我指点下啊?

正在回答

2 回答

如果代码整体还是这样只做测试之用,那我的建议有两个:

  1. 在writer.write("用户名:admin;密码:123456");中输出的字串结尾手动加上换行符,变成writer.write("用户名:admin;密码:123456\n");或writer.write("用户名:admin;密码:123456\r");

  2. 将writer.write("用户名:admin;密码:123456");这个方法改为java.io.PrintWriter.println()这个方法,即改为writer.println("用户名:admin;密码:123456");

我认为以上两种方法均可不必加上client.shutdownOutput();这句代码。

2 回复 有任何疑惑可以回复我~
#1

_小猪 提问者

非常感谢!
2016-07-09 回复 有任何疑惑可以回复我~

// 创建客户端Socket
   Socket client = new Socket("localhost", 8888);

   // 创建输出流,写入请求信息
   OutputStream out = client.getOutputStream();
   PrintWriter writer = new PrintWriter(out);
   writer.write("用户名:admin;密码:123456");
   writer.flush();
   //这行代码如果没有,服务器读取数据就会一直阻塞
   client.shutdownOutput();
   // 创建输入流,接受服务器响应信息
   InputStream in = client.getInputStream();
   InputStreamReader inr = new InputStreamReader(in);
   BufferedReader reader = new BufferedReader(inr);
   String info = null;
   while ((info = reader.readLine()) != null) {
    System.out.println("我是客户端,服务器说:"+info);
   }
   //关闭输入流
   client.shutdownInput();
   // 关闭资源
   client.close();

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

客户端输出流是否shutdownOutput()会不会对程序造成异常?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信