java基础系列之socket使用之BufferedReader,BufferedWriter出现的问题

来源:互联网 发布:淘宝助理上架宝贝 编辑:程序博客网 时间:2024/06/10 05:02
服务器端读入流部分代码:

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();
0 0
原创粉丝点击