【发布时间】:2013-12-12 19:15:54
【问题描述】:
我正在阅读 Socket InputStream,调用 read() 和 available() 适用于少数循环迭代。稍后 available() 无限期阻塞!
可能是什么问题?我怎样才能使这个非阻塞?
代码:
BufferedInputStream buffIn = new BufferedInputStream(in);
while (true)
{
if (buffIn.available() > 0)
{
len = buffIn.read(buffer, 0, buffer.length);
if (len == -1)
{
break;
}
baos.write(buffer, 0, len);
}
}
【问题讨论】:
-
我建议你试试 NIO,this 的问题可能会有所帮助。
-
谢谢。你是说除了蔚来别无他法吗?
-
您确定是
available()阻塞了吗?我不认为它应该阻塞,但是我使用 Java IO API 已经有一段时间了,所以我可能弄错了。 -
堆栈跟踪如下(建议available() 正在等待)-
PlainSocketImpl.socketAvailable() line: not available [native method] SocksSocketImpl(PlainSocketImpl).available()行:472 SocketInputStream.available() 行:217 BufferedInputStream.available() 行:381