出现这个的原因就是输入输出流的构造顺序弄反了。原因就这么简单。亲自摸索才知道。
这取决于是客户端还是服务端,比如客户端先发一个信息给服务端然后服务端再回复客户端
那么客户端的输入输出流顺序是这样的:
os = new ObjectOutputStream(socket.getOutputStream()); //先输出
is = new ObjectInputStream(new BufferedInputStream(socket.getInputStream())); //再读入
服务端的输入输出流顺序是这样的:
is = new ObjectInputStream(new BufferedInputStream(socket.getInputStream())); //先读入
os = new ObjectOutputStream(socket.getOutputStream()); //再输出
因为socket.getInputStream() 和 socket.getOutputStream() 是阻塞性函数,所以要严格按照顺序来构造。
问题解决。