Я пытаюсь понять, как работает независимая от платформы связь, потому что я хотел бы разделить данные сокетов между сервером Java и некоторыми родными клиентами Unix и Windows. Сокеты независимы от платформы по дизайну, но представление данных связано с машиной, поэтому полезно, если данные TCP абстрагируют реальный формат данных, поскольку формат данных, поддерживаемый в одной системе, необязательно должен поддерживаться на другом ,Протокол для независимой от платформы связи сокетов
Например, если я хочу отправить значение unsigned int из клиентской программы C++ на сервер Java, я должен сообщить серверу, что этот номер следует интерпретировать как отрицательное целое число. Как работает этот вид абстракции? С моими ограниченными знаниями я просто отправлю номер в виде текста, а затем добавлю какую-то уникальную последовательность символов, которая сообщает получателю, какие данные он получил, но я не знаю, является ли это жизнеспособным подходом.
Чтобы быть немного более конкретным: Я хотел бы отправлять сообщения, которые содержат следующее содержание:
- В начале сообщения какого-то короткого сигнала или команды , так что приемник точно знает, что делать с данными, которые будут следовать.
- Затем некоторое текстовое содержимое произвольной длины.
- Далее следует номер, который может быть также текстовым, но должен быть интерпретирован отдельно.
- В конце может быть отметка, которая сообщает серверу, что сообщение заканчивается здесь.
TCP обрабатывает данные в байтовых кусках. Означает ли это, когда я пишу закодированный символ UTF-8 в одном байте, что этот символ интерпретируется одинаково на разных машинах, если клиентские машины принимают во внимание большой байтовый порядок байтов Java? Спасибо за любой вклад и помощь.
JSON, protobuf. – ctn
«Сокеты независимы от платформы по дизайну, но представление данных связано с машиной» <- только если вы выберете так! Просто выберите формат данных, который не имеет этой проблемы - как говорит @ctn, вы можете выбрать JSON или protobuf. Задача решена. – fge
Протобуф был тем, о чем я думал, когда читал это. – dwxw