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

[size=medium]服务器端读入流部分代码:

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()时一直处于阻塞状态,

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

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

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

  客户端
 
output.writeUTF();
[/size]

你可能感兴趣的:(socket)