gpt4 book ai didi

java - 在我的应用程序中,为什么 readInt() 总是抛出 EOFException?

转载 作者:行者123 更新时间:2023-11-29 09:26:25 26 4
gpt4 key购买 nike

(请原谅我,因为我不经常用 Java 编写。)

我正在用 Java 编写一个客户端网络应用程序,我遇到了一个有趣的问题。每次调用 readInt() 都会抛出一个 EOFException。变量的类型为 DataInputStream(初始化为:DataInputStream din = new DataInputStream(new BufferedInputStream(sock.getInputStream())); 其中 sockSocket 类型)。

现在,sock.isInputShutdown() 返回 falsesocket.isConnected() 返回 true。我假设这意味着我与正在连接的另一台机器建立了有效连接。我还执行了其他检查以确保我正确连接到另一台机器。

DataInputStream 是否设置不正确?我是否遗漏了任何先决条件?

非常感谢任何帮助。


@tofubeer:我实际上向套接字写入了 17 个字节。套接字已连接到另一台机器,我正在等待该机器的输入(如果不清楚,我很抱歉)。我首先成功地从流中读取(以启动握手)并且这工作得很好。我现在正在检查我发送的请求是否格式错误,但我认为它们不是。此外,我尝试从流中读取一个字节(通过 read()),它返回 -1。

最佳答案

您要向套接字写入 4 个字节吗?根据 JavaDoc,如果此流在读取所有字节之前到达末尾,它将抛出 EOFException。

尝试连续调用 readByte() 4 次而不是 readInt(),看看会发生什么(可能并非所有调用都有效)。

编辑(根据您的编辑)。

找出在得到 -1 之前可以调用 read() 多少次。

当 read() 返回 -1 时,表示它已到达文件末尾。

还要找出每个 read() 返回的内容,以确保您正在阅读的内容是您实际写出的内容。

这听起来像是一个问题,要么是在握手时读取的代码比你读的多,要么是另一方没有写你认为它正在写的东西。

关于java - 在我的应用程序中,为什么 readInt() 总是抛出 EOFException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/670627/

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