Zack Tellman's library Gloss is excellent for this, if a bit confusing to understand at first.
On Feb 5, 2:50 pm, russellc <russell.christop...@gmail.com> wrote: > I needed a library to handle marshaling application defined (C > struct) binary TCP/IP protocol packets in a Clojure client app > replacing a legacy C++ client and there didn't seem to be an existing > library that performed as I needed. So, I've written a Marshal library > that marshals from the network to/from Clojure. > > Github:http://github.com/russellc/Marshal > Clojars:https://clojars.org/marshal > > //C header file definition > struct packet { > unsigned long type; > unsigned long size; > long data[1]; > > }; > > (require '[marshal.core :as m]) > (def packet (m/struct :type m/uint32 :size m/uint32 :data (m/array m/ > sint32 :size))) > (m/write output-stream packet {:type 1 :size 2 :data [1 -1]}) > (m/read input-stream packet) > => {:type 1 :size 2 :data [1 -1]} -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en