gpt4 book ai didi

java - 通过循环从套接字读取数据时获取 "java.io.EOFException"

转载 作者:行者123 更新时间:2023-12-01 05:16:53 25 4
gpt4 key购买 nike

我正在制作一个国际象棋游戏应用程序作为练习,并完成了所有功能。

现在我正在尝试实现网络部分,以便启用 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());

我初始化流的方式有问题吗...?被这个问题困扰了很长时间......并且迫切希望看到我的应用程序正常工作。

最佳答案

我认为这是一个错误,它可能与您刷新缓冲区但在调用 readUnshared() 之前没有写入或检查缓冲区是否为空有关。

EOFException 刚刚表示您到达了流或文件的末尾(文件结尾)。

仅使用您发布的代码我无法真正调试它。但请确保您将 Action 写入保存“非共享” Action 的位置,或在调用流之前进行检查。

关于java - 通过循环从套接字读取数据时获取 "java.io.EOFException",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11026535/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com