我正在爲練習製作一款國際象棋遊戲應用程序,並完成了所有功能。通過循環從套接字讀取數據時獲取「java.io.EOFException」
現在我想實現聯網的一部分,從而使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」和「出」的變量是類變量我聲明
static ObjectInputStream in1;
static ObjectInputStream in2;
static ObjectOutputStream out1;
static ObjectOutputStream out2;
我initilized他們這樣的主要功能:
in1 = new ObjectInputStream(player1.getInputStream());
有沒有什麼問題,我初始化流的方式......? 一直被這個問題困住了很長時間......並且絕望地看到我的應用程序工作。
爲什麼這些變量是靜態的? – EJP