Как я могу отправить данные в двоичном виде через сокет Java? - PullRequest
5 голосов
/ 05 октября 2010

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

Итак, суть: как я могу просто отправить несколько байтов через сокет в Java?

Ответы [ 3 ]

9 голосов
/ 05 октября 2010

Вы можете использовать простой OutputStream , заданный Сокетом .
Оттуда вы можете записать байтов.Вы также можете инкапсулировать этот поток в BufferedOutputStream , чтобы иметь буфер.

4 голосов
/ 05 октября 2010

Я бы действительно рекомендовал не использовать библиотеку Java Sockets напрямую.Я нашел Netty (из JBoss) очень простым в реализации и действительно мощным.Класс Netty ChannelBuffer поставляется с целым рядом опций для записи различных типов данных и, конечно, для того, чтобы вы могли записывать свои собственные кодеры и декодеры для записи POJO в поток, если хотите.

Эта страница действительно хороший стартер- Я смог сделать довольно сложный клиент / сервер с пользовательскими кодировщиками и декодерами менее чем за 30 минут, прочитав это: http://docs.jboss.org/netty/3.2/guide/html/start.html.

Если вы действительно хотите использовать сокеты Java.Выходной поток сокета может быть заключен в DataOutputStream, который также позволяет записывать много разных типов данных, например:

new DataOutputStream(socket.getOutputStream()).writeInt(5);

Надеюсь, это полезно.

1 голос
/ 05 октября 2010

Я бы рекомендовал просмотреть Буферы протокола для сериализации и ZeroMQ для передачи данных.

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