2014-01-12 38 views
0

我有服务器的ObjectInputStream()

ServerSocket socketListener = new ServerSocket(Config.PORT); 
... 
client = socketListener.accept(); 

和客户

sock = new Socket("127.0.0.1", Config.PORT); 

我想他们之间传输使用的ObjectInputStream和ObjectOutputStream的一些序列化的数据。 当我尝试做

ObjectInputStream inputStream = new ObjectInputStream(socket.getInputStream()); 

什么也没有发生既不在服务器端,也没有客户端。一切都落在这条线上。客户端和服务器都试图从套接字获取输入流,但它不起作用,也不能在客户端和服务器上工作。 如何解决这个问题,以便我可以在客户端和服务器之间传递序列化的数据?

回答

1

由于the javadoc说:

创建一个ObjectInputStream中,从指定的InputStream读取。从流中读取序列化流头并进行验证。该构造函数将阻塞,直到相应的ObjectOutputStream写入并刷新标题。

那么,既然服务器和打开的InputStream客户端开始,你实现了一个僵局:他们都阻塞,直到对方发送了流标头。如果您通过在客户端打开ObjectInputStream开始,则必须先在服务器端打开ObjectOutputStream(并在必要时立即刷新)(反之亦然)。

+0

我知道一个僵局! :)显然我没有仔细看过文档。非常感谢你。 – Alendorff