Я пытаюсь отправить proto через сокет, но я получаю ошибку сегментации. Может ли кто-нибудь помочь и рассказать мне, что не так с этим примером?как отправлять классы, определенные в .proto (протокольные буферы) через сокет
file.proto
message data{
required string x1 = 1;
required uint32 x2 = 2;
required float x3 = 3;
}
xxx.cpp
...
data data_snd, data_rec;
//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_rec, sizeof(data_rec), 0) < 0) {
cerr << "recv() failed";
exit(1);
}
Спасибо за помощь и replies-
@jespere, спасибо большое за ответ. только вопрос пожалуйста. При приеме, следует ли и десериализовать? это похоже на сериализацию или нет? Пожалуйста, помогите и еще раз спасибо! – make
При десериализации вы используете метод ParseFromString (или один из его родственников). – JesperE
Еще раз спасибо! Я окончательно сделал это ... просто еще один вопрос. Вы упомянули использовать buf.data(). похоже ли это на buf.c_str() или нет? Для размера данных, которые нужно записать в сокет, могу ли я использовать sizeof (buf.data()), т. Е. Отправить (socket, buf.data(), sizeof (buf.data()), 0) или нет? Еще раз спасибо за помощь – make