이진 데이터로 직렬화 protobuf 후, 데이터가 '\ 0'을 포함 할 수 있고, 직접 * 형 데이터의 송신이 완료되지 발생할 숯불로 변환된다.
해결 방법 :
buildProtobufMsg 공극 (CONST 스트링 시험, ZMQ의 message_t :: * MSG)
{
IF (MSG == nullptr a)
{
창;
}
테스트 데이터 :: ProtoBufData;
data.set_test (시험)
INT 크기 = data.ByteSize ();
CHAR ARR [크기]
data.SerializeToArray (ARR 크기)
msg-> 재구성 (크기)
를 memcpy (msg-> 데이터 () ARR 크기)
}
전송 차례 *는 char 후 데이터의 시퀀스를 기억하지 그렇지 않으면 불완전한 데이터로 이어집니다.
调用:
zmq :: message_t MSG;
buildProtobufMsg (문자열 ( "안녕하세요"), MSG)
zmqsocket.send (MSG)
【转】 : https://blog.csdn.net/bubbleyang/article/details/82628059