现在的位置: 首页 > 综合 > 正文

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

2014年02月13日 ⁄ 综合 ⁄ 共 723字 ⁄ 字号 评论关闭
服务器端读入流部分代码:

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();

抱歉!评论已关闭.