Почему Java Object Stream возвращает один и тот же объект каждый раз, когда я вызываю readObject?

Простите за псевдокод - мои беспроводные сети не работают, и я не могу скопировать код с моего автономного компьютера на StackExchange в данный момент.

У меня есть два java-приложения, подключенных через сокеты java.net. *. Я пытаюсь передать объекты «Сообщение» от одного к другому через потоки ввода / вывода объекта.

Вот что я делаю:

Class Message implements Serializable
{
  String text
  int data
     public Message(String txt, int dat)
     {
      this.text = txt;
      this.data = dat;
     }
     string toString()
     {
      return text + " " + data;
     }
}

Сервер :

Сервер имеет очередь под названием Исходящие

for(int i = 0; i < 1000; i++)
 { 

 Message adding = new Message("Hello!",i);
 Outbox.add(temp)
 Message temp =     Outbox.poll();
 out.writeObject(temp);
  system.out.println(temp)
 }

Клиент :

for(int i = 0; i < 1000; i++)
{
  Message temp;
  temp = in.readObject()
  system.out.println(temp)
}

Теперь я надеюсь, что очевидно, что я ожидаю, что консоли каждого программа выглядит идентично. Вместо этого я получаю вот что.

Сервер

Hello 0
Hello 1
Hello 2
Hello 3...

Клиент

Hello 0
Hello 0
Hello 0
Hello 0...

Таким образом, похоже, что объекты сообщения читаются, но не удаляются из потока.

Как очистить потоки и синхронизировать их, как ожидалось?

11
задан Raven Dreamer 11 November 2011 в 04:32
поделиться