Простите псевдокод - мои беспроводные сети отключены, и я не могу скопировать код с моего автономного компьютера на 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;
}
}
Сервер
Сервер имеет очередь с именем Outbox
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)
}
Client
for(int i = 0; i < 1000; i++)
{
Message temp;
temp = in.readObject()
system.out.println(temp)
}
Теперь я надеюсь, что это очевидно, что я ожидаю, что консоли каждой программы будут выглядеть одинаково. Вместо этого это то, что я получаю.
Сервер
Hello 0
Hello 1
Hello 2
Hello 3...
Client
Hello 0
Hello 0
Hello 0
Hello 0...
Итак, похоже, что объекты сообщения читаются, но не удаляются из потока.
Как я могу очистить потоки и синхронизировать их, как ожидалось?