How to serialize message and send/recive it over socket

142 views
Skip to first unread message

mjetuljcek

unread,
Aug 29, 2012, 10:40:36 PM8/29/12
to prot...@googlegroups.com
Hello, everyone!
 
I have problem with serialize and send/recive message it over socket (Windows7). Could you help me please. Thanx in advance. My code is:
 
Client side:
---------------
message::Message message;
   int uniqueid;
   printf("Vpiši ID odjemalca: ");
   std::cin >> uniqueid;
   printf("Sporočilo: ");
   std::getline(std::cin, line);
   if(line == "exit") break;
   message.set_uniqueid(uniqueid);
   message.set_bodytext(line);
   int message_length = message.ByteSize();
   google::protobuf::io::ArrayOutputStream array_output(szBuffer, message_length);
   google::protobuf::io::CodedOutputStream coded_output(&array_output);
   coded_output.WriteVarint32(message_length);
   message.SerializeToCodedStream(&coded_output);
   if(send(sClient, szBuffer, message_length, 0) == SOCKET_ERROR){
    printf("send() se ni izvedel zaradi napake %d\n", WSAGetLastError());
 
Server side:
----------------

(WSARecv(SocketInfo->Socket, &(SocketInfo->DataBuf), 1, &RecvBytes, &Flags, NULL, NULL)
message::Message message;
     google::protobuf::uint32 message_length;
     google::protobuf::uint8 prefix[8192];
     google::protobuf::io::CodedInputStream::ReadLittleEndian32FromArray(prefix,&message_length);
     google::protobuf::io::ArrayInputStream array_input(&(SocketInfo->DataBuf), message_length);
     google::protobuf::io::CodedInputStream coded_input(&array_input);
     message.ParseFromCodedStream(&coded_input);
     printf("Podatki so bili uspešno prejeti z vodila ID: %d\n", SocketInfo->Socket);
     printf("Sporočilo: %s\n", message.bodytext());

Reply all
Reply to author
Forward
0 new messages