thanks for reply

Could you please give or send me a small exp on how to serialize and
deserialize proto?
thanks again!

On Mar 12, 6:37 pm, Henner Zeller <henner.zel...@googlemail.com>
wrote:
> You're trying to send the raw C++ memory representation of a protocol object
>   send(socket, &data_snd, sizeof(data_snd), 0)
> That doesn't work. And is the reason why protocol buffers are there in
> the first place: they provide serialization techniques.
>
> You need to use the serialization methods that SerializeToStream or
> SerializeToString that generate a platform independent string
> serialization from the content of the protocol buffer. On the other
> side deserialize with ParseFromString/ParseFromStream
>
>  http://code.google.com/apis/protocolbuffers/docs/overview.html
>
> -h
>
> On Fri, Mar 12, 2010 at 09:29, mk <apollo...@gmail.com> wrote:
> > Hi,
>
> > I am trying to send a proto over a socket, but i am getting
> > segmentation error.  Could someone please help and tell me what is
> > wrong with this?
>
> > file.proto
> > message data{
> >        required string x1 = 1;
> >        required uint32 x2 = 2;
> >        required float x3 = 3;
> > }
>
> > client.cpp
> > ...
> >    // class defined in proto
> >    data data_snd;
> >    data data_rec;
>
> >    char *y1 = "operation1";
> >    uint32_t y2 = 123 ;
> >    float y3 = 3.14;
>
> >    // assigning data to send()
> >    data_snd.set_x1(y1);
> >    data_snd.set_x2(y2);
> >    data_snd.set_x3(y3);
>
> >    //sending data to the server
> >    if (send(socket, &data_snd, sizeof(data_snd), 0) < 0) {
> >       cerr << "send() failed" ;
> >       exit(1);
> >     }
>
> >     //receiving data from the client
> >     if (recv(socket, &data_rcv, sizeof(data_rcv), 0) < 0) {
> >        cerr << "recv() failed";
> >        exit(1);
> >     }
>
> >     //printing received data
> >     cout << data_rec.x1() << "\n";
> >     cout << data_rec.x2() << "\n";
> >     cout << data_rec.x3() << "\n";
> > ...
>
> > server.cpp
> >  ...
>
> >     //receiving data from the client
> >     if (recv(socket, &data_rcv, sizeof(data_rcv), 0) < 0) {
> >        cerr << "recv() failed";
> >        exit(1);
> >     }
>
> >     //printing received data
> >     cout << data_rec.x1() << "\n";
> >     cout << data_rec.x2() << "\n";
> >     cout << data_rec.x3() << "\n";
>
> >   // assigning data to send()
> >    data_snd.set_x1(data_rec.x1());
> >    data_snd.set_x2(data_rec.x2());
> >    data_snd.set_x3(data_rec.x3());
>
> >    //sending data to the server
> >    if (send(socket, &data_snd, sizeof(data_snd), 0) < 0) {
> >       cerr << "send() failed" ;
> >       exit(1);
> >     }
> > ...
>
> > Thanks for help and replies-
>
> > --
> > You received this message because you are subscribed to the Google Groups 
> > "Protocol Buffers" group.
> > To post to this group, send email to proto...@googlegroups.com.
> > To unsubscribe from this group, send email to 
> > protobuf+unsubscr...@googlegroups.com.
> > For more options, visit this group 
> > athttp://groups.google.com/group/protobuf?hl=en.

-- 
You received this message because you are subscribed to the Google Groups 
"Protocol Buffers" group.
To post to this group, send email to proto...@googlegroups.com.
To unsubscribe from this group, send email to 
protobuf+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/protobuf?hl=en.

Reply via email to