ソケット転送に関するプロトコル バッファについていくつか質問しましたが、サーバー エンドでクライアントからデータを受信するときに問題が発生しました。
クライアントエンドコードは次のとおりです。
int sendSystem(int sockfd, const void *buf, size_t nbytes, int flags) {
return ::send(sockfd, buf, nbytes, flags);
}
クライアントが各バイトを表す整数でデータを送信するようなものです。そのため、データはバイト単位で転送されていました。
サーバーエンドコードは次のとおりです。
GameRequest gameRequest=GameRequest.parseFrom(CodedInputStream.newInstance(socket.getInputStream()));
GameRequest gameRequest=GameRequest.parseDelimitedFrom(socket.getInputStream());
GameRequest gameRequest=GameRequest.parseFrom(socket.getInputStream());
データを受信して解析するために上記の各方法を試しました...どれも良い方法ではないことがわかりました..ほとんどの場合、「メッセージに無効なタグがあります」というメッセージが表示されるか、デバッグモードをオンにすると、上記のコードの行で待機すると、ボタンのステップオーバーとステップインが無効になっているため、次のステップに移動したり、呼び出し元のメソッドに移動したりできません...