`
wang_2011_ying
  • 浏览: 144696 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

socket通讯输入流输出流阻塞解决方案

阅读更多
服务器端读入流部分代码:

System.out.println(new BufferedReader(new InputStreamReader(socket.getInputStream())).readLine());

客户端写入流部分代码
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));           
writer.write(content);
writer.flush();



程序运行时出现阻塞

原因分析:
服务器端使用了readLine();也就是在读一行文本,读文件的时候不会出现问题,但是在使用Socket时,客户端写入了数据
但并没有提供换行符,所以服务器端在readLine()时一直处于阻塞状态,

解决方法:
一:
   可以在客户端写完数据后加上换行符,
   BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));           
   writer.write(content);
   writer.newLine();
   writer.flush();

这样在服务器端就不会出现阻塞。

二:
  使用DataOutputStream和DataInputStream
  服务器端:
  input.readUTF();

  客户端
  output.writeUTF();
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics