0

I have a test.proto file having the code shown below. I am using code generated by this file in my client server program.

message Person {
required string user_name        = 1;
optional int32  favourite_number = 2;
repeated string interests        = 3;

}

Client side i have no problem to send data but at the server side i am getting protocol buffer parsing error(in the file:\protobuf\message_lite.cc(line123)) says "cant parse message of type 'person' because its missing required field:user_name"

Though i have checked my client side but couldnt find anything wrong but i might missing something at server side which is not reading string data ?

               //Server side code for Protocol Buffers
               Person filldata;
       google::protobuf::uint32 size;
               //here i might need google::protobuf::string stsize; Not sure ?
       google::protobuf::io::ArrayInputStream ais(buffer,filldata.ByteSize());
       CodedInputStream coded_input(&ais);
       coded_input.ReadVarint32(&size);
               //have tried here both coded_input.ReadString and coded_input.ReadRaw
       filldata.ParseFromCodedStream(&coded_input);

       cout<<"Message is "<<filldata.DebugString();
               //still getting same error have no idea what to do exactly to fix it :(

Haved Looked Here but still couldnt got it from that explanation, Hope someone can fix it.

Thanks!

1 Answer 1

1
google::protobuf::io::ArrayInputStream ais(buffer,filldata.ByteSize());

At this point, filldata is a newly-initialized message, so filldata.ByteSize() is zero. So, you're telling protobufs to parse an empty array. Hence, no fields are set, and you get a required fields error. Messages have variable length, so you need to make sure the exact message size is passed along from the server.

Sign up to request clarification or add additional context in comments.

1 Comment

Thanks it works, now i using instead bytes received by the server side buffer.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.