Как передавать объекты по сети, используя Java - PullRequest
3 голосов
/ 26 июня 2010

какую библиотеку я должен использовать?Какие функции мне помогают?

Ответы [ 4 ]

8 голосов
/ 26 июня 2010

Самый простой способ - использовать сериализация . Следовательно, ваши классы объектов должны реализовывать сериализуемость, поэтому должны иметь все члены (примитивы и большинство стандартных классов Java уже делают это). Это позволяет сопоставлять экземпляры объекта и потоки байтов во время выполнения.

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

7 голосов
/ 26 июня 2010

ObjectOutputStream / ObjectInputStream.

Вся логика примерно такая.Настройте в соответствии с требованиями вашего приложения.

Отправьте:

ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(baos);
oos.writeObject(objectToSend);
oos.close();

byte[] bytes = baos.toByteArray();
socket.write(bytes);

Получите:

ObjectInputStream ois = new ObjectInputStream(socketInputStream);
MyObject mo = (MyObject)ois.readObject();
3 голосов
/ 26 июня 2010

Зависит от:

Если другая конечная точка находится в Java, то сериализация Java может быть самым быстрым способом реализации.Но обратите внимание, что поддержка Java Serialization не является тривиальной задачей и может быть трудной задачей для поддержания в течение долгого времени.Для некоторых примеров просто воспользуйтесь Google "getchas для сериализации Java".

Если другой конечной точки нет в Java, или в будущем нужно поддерживать и совместимость, то я бы порекомендовал более общую многоразовую кодировку.Для этого я рассмотрю Буферы протокола Google или Apache Thrift (я могу опубликовать только 1 гиперссылку).

Конечно, всегда есть возможность использовать XML для кодирования ваших объектов.:)

Лично в наших проектах мы использовали буфер протокола Google, и, на мой взгляд, его нельзя превзойти по простоте использования, удобству обслуживания и, что наиболее важно в нашем случае, совместимости между версиями протокола буферов.

0 голосов
/ 02 сентября 2015

Если вы находитесь в многоплатформенной среде, вы можете использовать CORBA .Хотя это немного сложно, потому что вам может потребоваться контролировать обе конечные точки и реализовать привязки языка определения интерфейса (IDL).

Хорошей альтернативой является использование JSON .Вам просто нужно отобразить структуру JSON в ваши объекты Java.

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