0
C++シリアライズ使用して解析する:ZeroMQオーバーいるProtobuf C++シリアライズされた文字列を送信するとPython
int main()
{
GOOGLE_PROTOBUF_VERIFY_VERSION;
proto::Request request;
std::string output;
request.set_fieldone("X");
request.set_fieldtwo("Y");
// Prepare our context and socket
zmq::context_t context (1);
zmq::socket_t socket (context, ZMQ_REQ);
socket.connect ("tcp://localhost:5555");
request.SerializeToString(&output);
long size = output.length();
zmq::message_t request(size);
memcpy(request.data(), &output, size);
socket.send(request);
return 0;
}
Pythonのデシリアライズ:私は、エラーメッセージを表示します
def __init__(self):
self.database.connect()
self.context = zmq.Context()
self.socket = self.context.socket(zmq.REP)
self.socket.bind("tcp://*:5555")
self.request = call_init_pb2.DialRequest()
def run(self):
message = self.socket.recv()
self.request.ParseFromString(message)
:
をself.request.ParseFromString(message)
google.protobuf.message.DecodeError: Error parsing message
私が達成したいのは、メッセージをC++でシリアル化し、ネットワーク経由でPythonサーバーに送信することです。メッセージのシリアル化を解除し、サーバー側でビジネスロジックを実行して、メッセージの特定のプロパティを確認します。私は、Pythonサーバー側で同じ長さとタイプの文字列を受け取ることができますが、解析は機能しません。
私はいくつかの基本的な基礎知識を欠場しましたか?