超时Java readByte()会阻止应用程序
如果客户端突然断开连接并引发EOF异常,则以下循环似乎会阻止整个服务器应用程序:
String a = "";
int amount = 1;
while(((cr = streamIn.readByte()) != EOF))
{
if(amount < 100)
{
a+=(char)cr;
amount++;
}
else
break;
}
根据功能描述: readByte():接收一个字节。该方法将阻塞,直到数据可用
问题是,如何让它超时,最多只阻塞几秒钟强>
# 1 楼答案
那是什么服务器?我的意思是它会阻止为客户服务的线程突然下降。。。它仍然应该为其他客户服务
# 2 楼答案
研究使用inputStream。available(),返回无需阻塞即可检索的字节数
(未经测试)示例:
# 3 楼答案
你试过设置Socket.setSoTimeout()