Как прочитать двоичные данные из файла и передать их через сокеты Ruby клиенту, выполняющему побитовые операции? - PullRequest
0 голосов
/ 18 ноября 2010

В настоящее время я работаю над программным обеспечением на Ruby, которое предназначено для чтения двоичного сообщения из файла и последующей передачи его через сокет TCP или UDP в программу на C, написанную моим коллегой. Эта программа на Си должна быть способна выполнять побитовые операции над этими двоичными сообщениями, прежде чем отправлять их обратно в мою программу для сравнения отправленных и полученных данных.

Моя текущая проблема связана с тем, как Ruby воспринимает все как строки. Я относительно плохо знаком с языком и не уверен, как мне следует подойти к этой проблеме.

Моя главная задача - убедиться, что в моих двоичных сообщениях не произошло никаких изменений ни до, ни во время их первоначальной передачи в программу C.

Любая помощь, которую вы можете оказать, будет принята с благодарностью.

Спасибо, Martin

1 Ответ

0 голосов
/ 18 ноября 2010

Ruby's Класс: IO является хорошей отправной точкой.Прочтите первый раздел, в частности флаг "b" и его отношение к ОС.После этого read или read_bytes могут быть полезны.

Re: "Кажется, что Ruby обрабатывает все как строки".Ruby видит файл как последовательность байтов, прочитанных с диска.То, как вы указываете Ruby читать, обрабатывать и отображать эти байты, определяет, являются ли байты строками текста, записями из некоторого файла базы данных, изображения или звукового файла.Вы можете читать текст, используя ориентированные на данные методы, затем поворачиваться и обрабатывать данные как строку.Вы можете читать «двоичные» данные, используя методы чтения строк, затем агрегировать их в памяти и обрабатывать как байты.Ruby - это всего лишь инструмент, который мы используем для манипулирования байтами, но мы сами решаем, что означают эти байты.

...