我将尝试使用simplejson和Json.NET在Python服务器和C#客户端之间建立基本的ZeroMQ套接字链接。我尝试从Python发送一个字典,并在C#中将其读入一个对象。
message = {'MessageType':"None", 'ContentType':"None", 'Content':"OK"}
message_blob = simplejson.dumps(message).encode(encoding = "UTF-8")
alive_socket.send(message_blob)
这条信息被作为普通的UTF-8字符串发送,或者如果我使用UTF-16,则会发送为“'\xff\xfe{\x00”\x00...”等等。
C#代码是我的问题所在:
string reply = client.Receive(Encoding.UTF8);
收到的UTF-8消息是“≻潃瑮湥≴›…”等。
我尝试使用UTF-16,消息可以正常传输,但第一个符号仍然是小端的 \xFF \xFE BOM,所以当我尝试将其提供给反序列化程序时,会出现问题。
PythonMessage replyMessage = JsonConvert.DeserializeObject<PythonMessage>(reply);
//PythonMessage is just a very simple class with properties,
//not relevant to the problem
我遇到了一个错误 (显然是在第一个符号 \xFF处引起的):
Unexpected character encountered while parsing value: .
我在使用编码方面显然出现了问题。你能否向我展示正确的做法?
Receive
方法是什么?难道 Socket.Receive 只接受字节数组吗?那么client
是什么? - Joniusing (ZmqContext context = ZmqContext.Create()) using (ZmqSocket client = context.CreateSocket(SocketType.REQ))
- Alex Bausk