Si utilizo protocol buffers con archivos en mi ordenador no tengo ningun problema en serializar y deserializar los datos, todo empieza cuando intento enviar esa informacion a traves de un socket. A continuacion os pongo el codigo para que os hagais una idea y luego el error:
C++
Código:
C#// Aqui relleno mi mensaje que es exactamente igual que el ejemplo de la pagina oficial. tutorial::AddressBook address_book; tutorial::Person* person = address_book.add_person(); person->set_email("abcdefgh"); person->set_id(13); person->set_name("pepito"); // Serializo el mensaje en un string y lo envio a traves del socket string buf; person->SerializeToString(&buf); send(newsockfd,buf.data(),buf.length(), 0);
Código:
Una vez aqui...el error que se produce es : Protocol message contained an invalid tag ( zero )private AddressBook newdata; // esta es la variable donde se va a alojar el mensaje ............ byte[] buffer = new byte[1024]; int bytes = 0; bytes=handler.Receive(buffer); newdata = AddressBook.Parser.ParseFrom(buffer);
Este error ya me sucedia al leer desde archivos en vez de los sockets y lo solucione creando un array del mismo tamaño que los byes que ocupaba el archivo. Pero el buffer de sockets da igual que le ponga los 24 bytes que se envian que no funciona, sale ese mensaje de arriba. Alguien sabe que estoy haciendo mal?