网上查找后发现原因是,客户端和服务端链接后 不能都先创建 输出流, 应该是服务端先创建 ObjectInputStream 再创建ObjectOutputStream,客户端与之相反。
但这样设置后,我的代码还会出现死锁,然来发现我的写入流加了缓存流,而且没有调用flush()方法。
os = new ObjectOutputStream(new BufferedOutputStream(socket.getOutputStream())); 删除后:
os = new ObjectOutputStream( socket.getOutputStream());