0

私は最近、じゃんけんゲームをマルチプレイヤー対応のプログラムに適応させようとすることに興味を持ち始めたので、今日はサーバーに関するチュートリアルを調べることにしました。私はそれを正確にフォローしているようです(別のIDEを使用することは別として)。しかし、何かがうまくいかず、それが何であるか正確にはわかりません。チュートリアル メーカーにとっては問題なく動作します。EOFException を調べましたが、まったく役に立ちませんでした。

Youtubeのチュートリアル

問題のスクリーンショット。 スクリーンショット

[EOFException に関するドキュメント](ここにリンクがありましたが、2 つ以上のリンクを投稿するには少なくとも 10 の評判が必要です)

「入力中にファイルの終わりまたはストリームの終わりに予期せず到達したことを通知します。この例外は、主にデータ入力ストリームでストリームの終わりを通知するために使用されます。他の多くの入力操作は、スローするのではなく、ストリームの終わりに特別な値を返すことに注意してください。例外。"

[ここで尋ねられた同様の、しかし明らかに未解決の質問](ここにもリンクがありました]

ちなみに、私がここに投稿した内容を正確に調べてみると、DaniWeb で質問したこともわかります。いずれかで解決されない場合に備えて、複数の場所に投稿しています。そうだとすれば……知識は多ければ多いほどいい。

4

1 に答える 1

0

EOFExceptionduringreadUTF()は、缶に書かれているように、ストリームの終わりに到達したことを意味します。このメソッドは、 (他のすべてのメソッドと同様nullに) とは異なり、ストリームの最後に返らないことに注意してください。readLine()readXXX()

また、送信と受信が同期していないことを意味する場合もあります。たとえば、a または同様のものを省略したために途方もなく大きなバイト数を読み込もうとしているreadInt()、またはピアで必要のない余分な何かを書き込んでいるなどです。そうでない場合の結果として、ストリーム内の次のバイトを読み取ろうとしてwriteUTF()います。これはアプリケーション プロトコル エラーです。

投稿したコードでこれがどのように発生したかは別の質問ですが、コードはソケットを閉じないため、役に立ちません。out.close()サーバー コードとクライアント コードにを追加しますin.close()。ただし、これらの終了の有無にかかわらず、問題を再現することはできません。これが本当のコードだと確信していますか?

于 2014-03-19T23:07:38.223 に答える