我正在为练习制作一款国际象棋游戏应用程序,并完成了所有功能。通过循环从套接字读取数据时获取“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