Closed metadings closed 8 years ago
I'm not sure if it fits here -- i'm sorry if not. ZFrame.ReadString() is not reading all the received string in one call. I'm having to ZFrame.ReadString() more than once in a loop to read all the received string.
I'm doing something like:
string theStringIWant = string.Empty;
string auxString = string.Empty;
do
{
auxString = frame.ReadString();
theStringIWant += auxString;
}
while (!string.IsNullOrEmpty(auxString));
I've tried different Encoding and nothing changed. Anyway, I found out that for each special character used in the string, there is one less byte in the string after calling ReadString(). For instance:
If my sent string is: Hêllo
The following happens in the receiving side:
a = frame.ReadString();
b = frame.ReadString();
// a = Hêll
// b = o
That's way I'm using a loop.
Is this by design or is it a bug?
I'm using the nuget version 4.1.0.15
You definitifely need the update to the current version (v4.1.0.17)... I don't know if I got it right in the last version (v...15, v...16) so please just install/git pull
the update.
That was a bug resolved in some commit with ReadString and ReadLine...
This bug persists in the 4.1.0.17 version. Just tried it.
I don't have problems right now... Please try writing/reading the string using Encoding.ASCII.
irrelevant, as of v4.1.0.xx
ZSocket.ReceiveBytes method now does return
int
, and-1
if there was aZError
. Do not usezmq_recv
in favor ofzmq_msg_recv
! Please have a look onZSocket.ReceiveFrame
andZSocket.ReceiveMessage
, where you receive and sendZFrame msg
andZMessage msg
(basically anIList<ZFrame>
).ZFrame.ReadString method now doesn't try
= encoding.GetMaxByteCount(length)
.ZFrame.ReadLine is a new method, which returns a string ending in LineFeed
\n
0x0A
possibly followed by a CarriageReturn\r
0x0D
.