Make prefix size endian-independent for protobuf objects.

This commit is contained in:
Christoph Heiss 2018-02-28 10:04:34 +01:00
parent 8da6052c9e
commit 73be1ac218
2 changed files with 5 additions and 1 deletions

View file

@ -8,6 +8,7 @@
#include <iostream>
#include <string>
#include <arpa/inet.h>
#include "asio.hpp"
#include "clipp.h"
@ -88,7 +89,7 @@ int main(int argc, char* argv[])
std::string output;
command.SerializeToString(&output);
uint32_t size{static_cast<uint32_t>(output.size())};
uint32_t size{htonl(static_cast<uint32_t>(output.size()))};
asio::write(socket, asio::buffer(&size, 4));
asio::write(socket, asio::buffer(output.data(), output.size()));

View file

@ -16,6 +16,7 @@
#include <thread>
#include <memory>
#include <cctype>
#include <arpa/inet.h>
#include "asio.hpp"
#include "clipp.h"
@ -179,6 +180,8 @@ public:
auto buffer{asio::buffer(&size, 4)};
asio::read(socket_, buffer, asio::transfer_exactly(4), error_code);
if (error_code) { break; }
size = ntohl(size);
}
std::string data(size, '\0');