mr0 has asked for the wisdom of the Perl Monks concerning the following question:
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.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: XDR basic encode decode
by andal (Hermit) on Mar 27, 2012 at 07:34 UTC | |
by mr0 (Initiate) on Mar 27, 2012 at 09:20 UTC |