socket通讯输入流输出流阻塞解决方案
服务器端读入流部分代码:
System.out.println(newBufferedReader(newInputStreamReader(socket.getInputStream())).readLine());
客户端写入流部分代码
BufferedWriterwriter=newBufferedWriter(newOutputStreamWriter(socket.getOutputStream()));
writer.write(content);
writer.flush();
程序运行时出现阻塞
原因分析:
服务器端使用了readLine();也就是在读一行文本,读文件的时候不会出现问题,但是在使用Socket时,客户端写入了数据
但并没有提供换行符,所以服务器端在readLine()时一直处于阻塞状态,
解决方法:
一:
可以在客户端写完数据后加上换行符,
BufferedWriterwriter=newBufferedWriter(newOutputStreamWriter(socket.getOutputStream()));
writer.write(content);
writer.newLine();
writer.flush();
这样在服务器端就不会出现阻塞。
二:
使用DataOutputStream和DataInputStream
服务器端:
input.readUTF();
客户端
output.writeUTF();
相关推荐
一叶梧桐 2020-10-14
lzzyok 2020-10-10
digwtx 2020-09-14
efeve 2020-09-14
poplpsure 2020-08-17
ITxiaobaibai 2020-07-26
libowenhit 2020-07-23
luckykapok 2020-07-06
hongsheyoumo 2020-06-27
jannal 2020-06-21
lanmantech 2020-06-16
咻咻ing 2020-06-16
weibingbingnet 2020-06-14
woyanyouxin 2020-06-04
houjinkai 2020-06-03
txj 2020-06-02
Chydar 2020-05-15