練習用のチェス ゲーム アプリケーションを作成して、すべての機能を完成させました。
今、ネットワーク部分を実装して、2 プレイヤー モードを有効にしようとしています...
私のサーバーコードでは、ループを使用して、両方のプレーヤーから順番にデータを継続的に取得しています。
各プレイヤーの最初のターンでは、サーバーは正常に動作し、データが他のプレイヤーに正しく転送されることを確認しました。int[] data1 = (int[]) in1.readUnshared();
しかし、ループの最初の行に戻ると、
java.io.EOFException
at java.io.ObjectInputStream$BlockDataInputStream.peekByte(Unknown Source)
at java.io.ObjectInputStream.readObject0(Unknown Source)
at java.io.ObjectInputStream.readObject(Unknown Source)
エラーが発生...
while(true){
int[] data1 = (int[]) in1.readUnshared(); // THIS PART!!
if(data1.length != 96)
break;
out2.writeUnshared(data1);
out2.flush();
int[] data2 = (int[]) in2.readUnshared();
if(data1.length != 96)
break;
out1.writeUnshared(data2);
out1.flush();
}
ここで、「in」および「out」変数は、私が宣言したクラス変数です
static ObjectInputStream in1;
static ObjectInputStream in2;
static ObjectOutputStream out1;
static ObjectOutputStream out2;
そして、次のようにメイン関数でそれらを初期化しました:
in1 = new ObjectInputStream(player1.getInputStream());
ストリームを初期化する方法に問題はありますか...? この問題でかなり長い間立ち往生しています...そして私のアプリケーションが動作するのを必死に見ています。