My problem here was that I was using I was using ParseFromString, after reading from socket. In order to get this to work I had to use ParseFromArray.
Not working code
len = recvfrom(sockfd, buffer, MAX_LENGTH ,
MSG_WAITALL, (struct sockaddr*) &cliaddr, (socklen_t*) &size);
if (len > 0) {
// Add ending string to buffer.
buffer[len] = '\0';
string data = string(buffer)
common::Message message;
if (message.ParseFromString(data)) {
working code
len = recvfrom(sockfd, buffer, MAX_LENGTH ,
MSG_WAITALL, (struct sockaddr*) &cliaddr, (socklen_t*) &size);
if (len > 0) {
// Add ending string to buffer.
buffer[len] = '\0';
common::Message message;
if (!
message .ParseFromArray(buffer, len+1)) {