Seeking the monks' wisdom on external data representation.

What is the recommended way to encode/decode data in XDR format for UDP comms between processes on dissimilar platforms? I haven't found anything off the self. Would prefer something light-weight.

The venerable XDR module from Gordon Matzigkeit supports RPC calls, but I need more basic encode/decode actions to/from a buffer (no RPC involved). The XDR package encodes unsigned int and opaque data, but RFC 4506 allows for additional data types, such as "string" (not to mention float and array). AFAIKS there is no module for such basic XDR - or am I missing something?

Perl's pack() and unpack() offer partial solutions: the "N" format delivers a good fit (4 byte uint in network byte-order), but "A/*" encodes a string without extending the byte string payload length up to a multiple of 4-bytes.

In my dreams I'd implement a new pack() feature "A%*", where the "%" means "round the length up to the required multiple, filling with NULLs" as per "XDR" string format.

At present I only need int and string, so could easily code it in the app., but there's room for something more comprehensive here.

mr0

In reply to XDR basic encode decode by mr0

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.