Java 准备就绪(字节[]b,int off,int len)和EOFEException

Java 准备就绪(字节[]b,int off,int len)和EOFEException,java,tcp,io,Java,Tcp,Io,我在我的一段代码中经常遇到这种异常,当我准备好调用时,这种情况就会发生。我不明白它是怎么发生的,因为readfull应该在len字节可用之前阻塞。如果它知道有那么多字节可用,那么它以后如何满足EOF 我怎样才能避开这个问题呢?(我正在读取前3个字节以获得长度(TLV的TL部分),然后在读取TLV时偶尔遇到这个问题) 谢谢你说: 抛出:EOFEException-如果此输入流在读取所有字节之前到达末尾 因此,如果您发送的长度不正确(即大于实际长度),或者如果发送方在写入所有字节之前关闭流,则会出现

我在我的一段代码中经常遇到这种异常,当我准备好调用时,这种情况就会发生。我不明白它是怎么发生的,因为readfull应该在len字节可用之前阻塞。如果它知道有那么多字节可用,那么它以后如何满足EOF

我怎样才能避开这个问题呢?(我正在读取前3个字节以获得长度(TLV的TL部分),然后在读取TLV时偶尔遇到这个问题)

谢谢你说:

抛出:EOFEException-如果此输入流在读取所有字节之前到达末尾


因此,如果您发送的长度不正确(即大于实际长度),或者如果发送方在写入所有字节之前关闭流,则会出现这种行为。

因此,如果另一端的人告诉我希望再发送50个字节,但实际上只发送20个,那么我会得到这个错误?我能用EOFEException尽可能多地阅读吗?明白了。这是发送端的一个bug,应该修复。如果此错误未修复或再次出现,您应该通过显示错误消息等方式处理异常。我不会试图让接收的字节数与消息开头指定的字节数不同,这是正常的。