0

ソケット転送に関するプロトコル バッファについていくつか質問しましたが、サーバー エンドでクライアントからデータを受信するときに問題が発生しました。

クライアントエンドコードは次のとおりです。

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());

データを受信して​​解析するために上記の各方法を試しました...どれも良い方法ではないことがわかりました..ほとんどの場合、「メッセージに無効なタグがあります」というメッセージが表示されるか、デバッグモードをオンにすると、上記のコードの行で待機すると、ボタンのステップオーバーとステップインが無効になっているため、次のステップに移動したり、呼び出し元のメソッドに移動したりできません...

4

0 に答える 0