我正在使用 java 的 InputStreamReader read() 函数。当我到达输入流的末尾时,我应该进入我的 int 变量的值 -1,但它会阻塞。
为什么我在输入流的末尾没有得到 -1? (我已经逐字调试了它,以确保它实际上是输入的结尾并且连接套接字处于 Activity 状态)。

使用 ready() 函数是一个很好的解决方案:

if (isr.ready())
    currCharVal = isr.read();

提前致谢,
伙计。

最佳答案

如果另一端没有关闭连接,就会发生这种情况。当套接字关闭时,read() 将返回 -1。

根据我的经验,使用 ready 和 available 是相当不可预测的。我只会 read(byte[]) 直到到达结束并期望另一端在完成时关闭。

关于java - 为什么 InputStreamReader read() 阻塞而不是返回 -1?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8954043/

10-12 21:19