Передача данных из C в Java - PullRequest
2 голосов
/ 12 ноября 2008

Каков наилучший способ передачи данных между сервером C в апплет Java? В настоящее время это делается с использованием буфера и копированием байтов в него с использованием memcpy, но если объект когда-либо изменяется, мне приходится выслеживать каждый случай, когда он отправляется апплету, и изменять его.

Есть ли лучший способ передать объект в Java? Как бы вы это сделали?

Изменить для пояснения: он идет от сервера C только к апплету Java, Java-сервлет отсутствует. Единственное, что апплет передает на сервер C, это шестнадцатеричное число, сигнализирующее о действии, которое необходимо предпринять

Ответы [ 3 ]

4 голосов
/ 12 ноября 2008

Возможно, вы захотите взглянуть на Буферы протокола

Они позволяют определять структурированные данные, а затем генерировать код для чтения и записи сообщений на любом из поддерживаемых языков. Единственный улов - я думаю, что они пока поддерживают только C ++, хотя я знаю, что был интерес к прямой реализации C.

1 голос
/ 12 ноября 2008

Я бы сериализовал объекты в XML или google protobuf на стороне C и десериализовал бы их на стороне апплета, используя один десериализатор. То есть не иметь более одного класса, который делает десериализацию. Сделайте так, чтобы пользователь выполнил сериализацию и что объект, выполняющий десериализацию, генерирует исключение, если версия, которую он пытается прочитать, не имеет обратной совместимости. Было бы плохой практикой иметь сериализацию и десериализацию во всем коде.

1 голос
/ 12 ноября 2008

Я бы открыл сокетное соединение между двумя приложениями. Вы можете сериализовать объект в массив байтов и сделать так, чтобы сервлет Java десериализовал его в объект Java с тем же значением. Таким образом, если определение класса изменяется, вам нужно изменить код только в двух местах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...