0

私は三目並べの基本的なクライアント サーバー ゲームを作成し、それを正しく動作させようとしています。1回のパススルーは完全に正常に機能しますが、ループバックして再度再生しようとすると、順序が狂います(クライアントは、以前に1つのコマンドrecv()を送信する必要があったものを送信しています)。send()コードを 1 時間ほど調べましたが、その理由がわかりません。

おそらくわかると思いますが、私は一般的にソケットと TCP プログラミングに慣れていないため、これにアプローチする方法がわかりません。

この問題のトラブルシューティング方法に関するヒントはありますか?

4

1 に答える 1

1

あなたはコードを投稿していませんが、あなたが言ったことから判断すると.. recv() は、他のプログラムの send() によって送信されたすべてのデータを読み取ることを保証しません。読み取ったバイト数を返すだけです。そのため、カウントを保持し、すべて読んだことを確認する必要があります。簡単に言えば、事前定義されたプロトコルを使用して、両側で読み取りおよび書き込みのバイト数を処理する必要があります。まだ読んでいない場合は、これに関する良い本を入手することをお勧めします。これは本当に役に立ちます。

于 2012-12-03T05:12:31.583 に答える