2015-06-15 3 views
2

Я хочу сделать связь сокета с помощью bin_prot в OCaml. Однако я не могу найти подробного объяснения или примера для этого. Раньше я разговаривал с Socket, поэтому я знаю его поток.
Есть ли у вас хорошие объяснения или примеры для связи Socket с помощью bin_prot в OCaml?Создание связи сокетов с помощью bin_prot

ответ

1

Ну, bin_prot - это всего лишь протокол сериализации и не зависит от того, что вы используете для транспортного уровня. В принципе, для сериализации значения для строки вы можете использовать функцию Binable.to_string (или Binable.to_bigstring). Он принимает упакованный модуль. Например, чтобы сериализации множества целых чисел, сделайте следующее:

let str = Binable.to_string (module Int.Set) mine_set; 

где mine_set есть множество целых чисел.

Если у вас есть свой произвольный тип, который реализует bin_prot, то он будет работать одинаково. Примером может служить:

module My_data = struct 
    type t = int * string with bin_io 
end 
let str = Binable.to_string (module My_data) (42,"answer") 
+0

Спасибо. Тогда, если я не знаю тип данных, которые я хочу сериализовать, что мне делать? Я имею в виду программу 'let f x = let str = Binable.to_string (module ...) x в str'. В этом случае, как я могу узнать тип x? – mmsss

+0

s/тип x/тип x – mmsss

+0

Если вы не знаете тип, вы не можете его сериализовать с помощью binprot. Тип 'x' равен типу' M.t' модуля 'M', который передается как первый аргумент функции' to_string', например '' (модуль M) '. Например, если вы передаете '(модуль Int.Set)', то тип второго аргумента должен быть 'Int.Set.t' и т. Д. – ivg