Я хочу сделать небольшую сетевую игру двух клиентов, отправляющих сообщения друг другу. Я новичок в сокетах и сериализации, но я читал, что отправка сериализованных объектов через сокеты - это способ сделать.Java Сериализация различных объектов
Моя проблема в том, что у меня есть несколько типов сообщений. Один может быть простым сообщением чата, другие один поворот (сообщение), как «NewObjectMessage» или «MoveObjectMessage» ...
В учебниках я всегда что-то вроде
MyClass myClass = (MyClass) objectinputstream.readObject();
, который делает литье чтения к одному конкретному классу, который я помещал в поток на другой стороне.
Вопрос: есть ли способ определить, какое сообщение я получаю? Я ищу что-то вроде
stream.peekObject()
или что-то для того, чтобы увидеть ее тип.
Или обычный способ отправить два сообщения, а первый - это только декларация о том, что будет дальше? Но что происходит, если некоторые пакеты смешиваются, а следующий объект не тот, который я просил?
Так что же лучший способ связи между клиентами способом, например. перемещение объекта и создание объекта (или запись сообщения и т. д.)?
Благодарим за помощь!
Nope. Вам нужен ** протокол **! Например, вы можете сначала отправить строку «String», которая описывает отправленный «объект»? Вы могли бы использовать что-то вроде [STOMP] (https://en.wikipedia.org/wiki/Streaming_Text_Oriented_Messaging_Protocol), в котором есть заголовки, в которые вы можете разместить метаданные ... –