Что такое библиотека, которую я должен использовать? Какие функции мне помогают?Как передать объекты через сеть с помощью java
ответ
Самый простой способ, вероятно, использовать serialization. Таким образом, ваши классы объектов должны реализовывать сериализуемые, поэтому все члены (примитивы и большинство стандартных классов Java уже делают это). Это позволяет сопоставлять между экземплярами объектов и потоками байтов во время выполнения.
Вам также нужен протокол для трансивера. Вы можете взглянуть на RMI, если вы не хотите иметь дело с потоковой передачей потоков байтов через провод, хотя это не так сложно. Использование RMI позволяет впоследствии создавать более мощные распределенные приложения Java.
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();
Есть ли причина, по которой вы записываете данные в ByteArrayOutputStream, а не непосредственно в SocketOutputStream? – meriton
Нет особых причин. Просто я обычно разделяю сериализацию и отправку/хранение/хранение в части db, поэтому я передаю байты []. Как я упоминал в другом ответе, сериализованные данные могут быть не единственной частью сообщения; Я могу добавить подпись, маршрутизацию, все, что требуется логикой –
Это зависит:
Если другая конечная точка находится в Java, то сериализация может быть самым быстрым способом реализации. Но примечание, поддерживающее Java Serialization, не является тривиальной задачей и может быть тяжелой задачей для поддержания с течением времени. Для некоторых примеров просто Google «Java serialization gotchas».
Если другая конечная точка не находится в Java или будущей ремонтопригодности, а совместимость является целью, то я бы рекомендовал более общую кодировку многократного использования. Для этого я бы посмотрел Google Protocol Buffers или Apache Thrift (могу опубликовать только 1 гиперссылку).
Конечно, всегда существует возможность использования XML для кодирования ваших объектов. :)
Лично в наших проектах мы используем буферы протокола Google и, на мой взгляд, не могут быть избиты для удобства использования, ремонтопригодности и, самое главное, в нашем случае совместимости версий протокола Buffer.
Если вы находитесь в многоплатформенной среде, вы можете использовать CORBA. Хотя это немного сложно, потому что вам может потребоваться контролировать обе конечные точки и реализовать привязки интерфейса определения интерфейса (IDL).
Хорошая альтернатива использует JSON. Вам просто нужно сопоставить структуру JSON с вашими Java-объектами.
- 1. Как передать буфер через сеть с помощью C++?
- 2. Как передать cv :: Mat через сеть?
- 3. Сериализация Java через сеть, копирует те же объекты?
- 4. Как передать объекты через IBAction?
- 5. Как передать объекты JSON через множественный выбор с помощью angularjs
- 6. Синхронизировать объекты в памяти через сеть
- 7. Java bacnet4j связь через сеть
- 8. подключение к базе данных через сеть с помощью приложения java
- 9. Java - загрузка файла через сеть с помощью буфера
- 10. Отправка звука через сеть с помощью PortAudio
- 11. Как передать объекты через заголовок в WCF
- 12. Как передать параметр через объекты массива?
- 13. Как передать объекты через разные классы?
- 14. Как передать объекты через кнопку eventHandler
- 15. Как передать массивы и объекты через реквизиты?
- 16. Как передать сложные объекты через SignalR?
- 17. Как передать файл с помощью IOUtils.copy через Java-сокеты
- 18. невозможно передать объекты с помощью zend2 EventManager
- 19. Как Mutex через сеть?
- 20. Разъемы Java не работают через локальную сеть?
- 21. Как передать java .class с одного компьютера на другой через сеть?
- 22. Как узнать, когда сеть с помощью программирования Java-сокетов
- 23. Как создать простую нейронную сеть с помощью нейрофа в java
- 24. Как передать объекты LazyPrimitive Hive в примитивные объекты Java?
- 25. Как передать объекты в качестве параметра с помощью IDL
- 26. Как обнаружить копию файла через локальную сеть с помощью C#?
- 27. Как пройти каталог через локальную сеть с помощью PHP?
- 28. Сериализовать объект через сеть с помощью Javascript - Как его улучшить?
- 29. Java - Collection.Sort через интерфейс Объекты
- 30. Невозможно передать объекты типа `const DictionaryKey 'через` ...'
Я ищу помощь с потоковыми байтовыми потоками по проводу. Можете ли вы предоставить некоторые рекомендации? – Jus12
RMI является старым и не может иметь дело с Callbacks с NAT в системе – user3224416