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

Reply via email to