【发布时间】:2011-07-29 03:29:01
【问题描述】:
我有一个我设置的服务器套接字,以及一个连接到服务器套接字的客户端套接字。
按以下顺序:
- 我打开一个从客户端到服务器的 ObjectOutputStream
- 在服务器上,我从客户端接受的套接字连接打开一个 ObjectInputStream
- 在服务器上,我使用客户端接受的套接字连接打开一个 ObjectOutputStream
- 在客户端我打开一个 ObjectInputStream
一切正常,没有错误。 在服务器上的循环中,我有以下内容
while(true) {
Map<Integer,Game> games = GameEngine.getGames();
System.out.println("Games is: " + games + " size is " + games.size());
secondaryOutputStream.writeObject(games);
secondaryOutputStream.flush();
// sleep for 2 seconds then send the games again
try {
Thread.currentThread().sleep(4000);
} catch (InterruptedException ie) {
ie.printStackTrace();
}
}
secondaryOutputStream 是从服务器到客户端的 ObjectOutputStream。 我在这里做的是给客户写一张地图。如您所见,我使用相同的 ObjectOutputStream 在循环中重复执行此操作。
没有例外,所以所有的连接都是可靠的。但是,在客户端,在与服务器建立套接字连接后,我只收到一次地图。如果地图被更新并写入客户端,当服务器首先将地图写入客户端时,我仍然会看到原始地图值。你能以这种方式重用对象流吗?真的很感谢
【问题讨论】: