Насколько часто расшифровывается тип объекта при использовании сокет-соединений?

#sockets #connection

#сокеты #подключение

Вопрос:

У меня есть текстовая игра, которую я делаю, чтобы немного попрактиковаться. Я дошел до того, что создаю накладную карту, которая просто показывает тип местности для того места, где вы находитесь в мире. Причина, по которой я спрашиваю об этом, заключается в том, что я буду отправлять текстовые и буферные изображения нескольким клиентам, подключенным к серверу через socket / serversocket. Теперь, было бы глупо создавать два совершенно разных соединения с сокетами через разные порты, чтобы разделить мои текстовые ответы и ответы BufferedImage для разных клиентов, или довольно часто расшифровывается, что такое объект, прежде чем решать, что с ним делать при чтении из objectinputstream? Расшифровка типа объекта позволила бы мне использовать только одно соединение с serversocket, я просто не знаю, насколько это правильно / практично / хорошая практика. Я также не знаю, вызовет ли отправка объектов BufferedImage проблему с быстрым получением текстовых ответов с сервера. Объекты BufferedImage будут иметь размер около 31×31 пикселей, что довольно мало, но я бы отправлял до 9 одновременно в стандартном типе array[] .

Ответ №1:

Это очень распространено. На самом деле, я бы сказал, что это требуется для любого нетривиального удаленного взаимодействия. Единственный вопрос заключается в том, как вы хотите передать информацию о типе программе на другой стороне соединения с сокетами; есть много способов сделать это, начиная от простого (сначала отправьте целое число с кодом типа, которое сообщает получателю, какие данные ожидать дальше) и заканчиваяс помощью полномасштабных протоколов сериализации объектов (таких как JSON, XML, буферы протокола Google и так далее).

Комментарии:

1. Насколько неодобрительно позволять получателю обрабатывать это, выполняя сравнения Object.getClass() внутри операторов if, чтобы решить, что делать, основываясь на том, какое сравнение дает true?

2. Неважно, я думаю, что это то же самое, что и ваша идея целочисленного кода типа.