Простите за псевдокод - мои беспроводные сети не работают, и я не могу скопировать код с моего автономного компьютера на 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...
Таким образом, похоже, что объекты сообщения читаются, но не удаляются из потока.
Как очистить потоки и синхронизировать их, как ожидалось?