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