2

protobuf を使用して一部のデータをシリアル化し、ソケット (winsock2) 経由で送信しようとしています。それを行う方法の簡単な例をいただければ幸いです。すでに Google のドキュメントを確認しましたが、役立つ例や初心者向けの説明はありません。

助けてくれてありがとう!私がやろうとしていることは次のとおりです。

クライアント側:


printf("Sporočilo: ");

getline(cin, line);

if(line == "exit") break;

printf("ID odjemalca: ");

cin >> id;

message::Message sporocilo;

sporocilo.set_bodytext(line);

sporocilo.set_uniqueid(id);

//... some usefull code for serializing data and send it over socket

send(sClient, Message, sizeof(Message), 0);

サーバ側:


WSARecv(Socket, &(DataBuf), 1, &RecvBytes, &Flags, NULL, NULL);

//... some usefull code for deserializing data and getting out bodytext and uniqueid

cout << sporocilo.bodytext();

cout << sporocilo.uniqueid();
4

1 に答える 1

3

シリアル化する最も簡単な方法は次のとおりです。

string buffer;
sporocilo.AppendToString(&buffer);
send(sock, buffer.c_str(), buffer.size(), 0);

あなたが含めなかったWSARecvの前後のコードなしで受信側で何か間違ったことをしているのかどうかを言うのは難しいです。

于 2012-09-02T22:19:26.610 に答える