Я столкнулся с проблемой в protobuf с сообщением десериализации в c ++.
Вот определение протокола:
syntax="proto3";
message my_message{
int32 flag=1;
sign_detail sdetail=2;
}
message sign_detail{
string usr_id=1;
string usr_nickname=2;
int32 phone_num=3;
string usr_sex=4;
string email=5;
string password=6;
}
тогда я получаю сокет и кладу его в buf:
my_message recver;
int n=recv(connfd, buf, MAXLINE, 0);
printf("%s\n", buf);
recver.ParseFromArray(buf, n);
cout<<"recver:"<<recver.flag();
но я получаю это:
flag: 2
sdetail {
phone_num: 123
email: "123"
password: "123"
}
recver:0
recver пуст, почему?