У меня есть сокет сервера, который я настраиваю, и сокет клиента, который подключается к сокету сервера.
В следующей последовательности:
- Я открываю 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();
}
}
secondOutputStream - это ObjectOutputStream от сервера к клиенту.
Здесь я пишу карту клиенту. Я делаю это несколько раз в цикле, как вы можете видеть, используя один и тот же ObjectOutputStream.
Нет никаких исключений, поэтому все соединения звуковые. Однако на стороне клиента я получаю карту только один раз, после того как сокет-соединение установлено с сервером. Если карта обновляется и записывается на клиент, я все еще вижу исходные значения карты, когда сервер first записал карту на клиент. Можете ли вы использовать объектные потоки таким образом? Спасибо действительно