Связь клиент / сервер с использованием сериализованных объектов - PullRequest
0 голосов
/ 11 июня 2011

Я пытаюсь установить соединение клиент / сервер для игры вдохновителя. Я использовал перечисления для представления разных колышков и сделал их сериализуемыми.

Затем я должен реализовать соединение, используя serversocket и получить сокет, используя accept и так далее. Как только соединение установлено, я сначала должен прочитать объекты клиента, и именно здесь у меня возникают проблемы ...

Вот фрагмент моего кода, который создает исключение EOFException, прежде чем я смог что-либо сделать! (данные клиента отправляются при взаимодействии с пользователем).

ObjectInputStream ois =
    new ObjectInputStream(socket.getInputStream());
ArrayList<Peg> combination = new ArrayList<Peg>();
do
{
    combination.clear();
    for (int i = 0; i < 4; i++)
    {
        combination.add((Peg)ois.readObject());
    }
}
while (!checkCombination(combination));
ois.close();
socket.close();

Спасибо заранее

Ответы [ 2 ]

2 голосов
/ 11 июня 2011

Нам нужно больше деталей. Как вы синхронизируете записи с клиента и чтения с сервера? Можете ли вы опубликовать более подробную информацию?

Кстати, использование сырых сокетов является абсолютным требованием? Если нет, попробуйте RMI , который делает то, что вы хотите сделать, с гораздо меньшими хлопотами (т. Е. Отправляя через объекты Java прозрачно и намного больше).

0 голосов
/ 11 июня 2011

Если вы получаете EOFException, это означает, что другой конец закрыл соединение.

Если вы хотите отправить список, просто отправьте список. т.е.

// on the sender
List<Peg> list =
oos.writeObject(list);

// on the receiver
List<Peg> list = (List<Peg>) oid.readObject();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...