Timo B. Hübel wrote:
On Wednesday 30 January 2008 13:51:58 you wrote:
Okay, but then I have to make sure that my strings won't contain any
newline characters, right? If this is the case, another question raises
up: I am using Data.Binary to do the serialization of my data structures
to ByteString, so does anybody know if this makes guarantees about
newline characters in the resulting ByteString?
Otherwise I would go for the "transmit the length of what to
expect"-solution.
Fortunately there is an easy way to hide newlines.
Use "show"
That will wrap newlines as \n, as well as coping with other odd
characters like NULL which might upset a C library (if you're talking to
C at any point).
Then you use "read" on the far end.
This sounds good, but don't I throw away all (possible) performance gains of
transmitting ByteStrings directly when using show/read to convert them to
ordinary strings and back?
Probably not all of them, but some of them, definitely.
If you want to transmit an arbitrary bytestring then I'm pretty sure
that transmitting a length word first is the way to go. An arbitrary
bytestring can have any value in it, so there are no values left to act
as delimiters :) You'd have to have some kind of escaping mechanism,
like show, which is expensive.
Jules
_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe