我最近对尝试将我的Rock-Paper-Scissors游戏改编成多人友好程序感兴趣,所以今天我决定在服务器上查找教程。我似乎正在精确地遵循它(除了使用不同的IDE)。然而,出现问题并且我不确定它究竟是什么,它对于教程制作者来说很好。我已经查询了EOFException,但它并没有完全帮助我。
我的问题截图。
[关于EOFException的文档](我这里有一个链接,但我需要至少10个声望来发布两个以上的链接)
"表示在输入过程中意外到达文件末尾或流尾。 此异常主要由数据输入流用于信号流的结束。请注意,许多其他输入操作在流的末尾返回特殊值而不是抛出异常。"
[这里有一个类似但显然未解决的问题](我这里也有链接)
顺便说一下,如果你查看我在这里发布的确切内容,你也会发现我已经在DaniWeb上问了这个问题。我只是在多个地方发帖,以防它在一个或另一个地方得不到解决。如果是,那么......知识越多越好。
答案 0 :(得分:0)
EOFException
期间 readUTF()
意味着它已经到达了流的末尾,就像在锡上所说的那样。请注意,与null
不同,此方法不会在流末尾返回readLine()
(但与所有其他readXXX()
方法一样)。
它也意味着您的发送和接收不同步,例如你试图读取一些可笑的大量字节,因为你遗漏了一个readInt()
或类似的东西,或者你在同伴那里写了一些你不应该有的东西,所以你要尝试阅读当它不是writeUTF()
时,流中的下一个字节是out.close()
的结果。这是应用程序协议错误。
您发布的代码中发生的这种情况是另一个问题,但您的代码并未关闭套接字,这对您没有帮助。在服务器代码中添加in.close()
,在客户端代码中添加{{1}}。但无论是否关闭,我都无法重现您的问题。你确定这是真正的代码吗?