Java readByte() 阻止应用程序

标签 java timeout

如果客户端突然断开连接并引发 EOF 异常,则以下循环似乎会阻塞整个服务器应用程序:

String a = "";
int amount = 1;
while(((cr = streamIn.readByte()) != EOF))
{
 if(amount < 100)
 {
  a+=(char)cr;
  amount++;
 }
 else
  break;
}

根据功能说明: readByte():接收一个字节。该方法将阻塞,直到数据可用。

问题是,我怎样才能使其超时,使其最多只阻塞几秒钟?

最佳答案

您是否尝试过设置 Socket.setSoTimeout()

关于Java readByte() 阻止应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4829163/

相关文章:

java - 服务器响应后 Apache HttpClient 超时异常

c++ - glMapBufferRange 卡住 OpenGL 驱动程序

java - 如何在 Netty 中取消写入超时?

java - 如何在Hibernate中调用用户定义的mysql函数

java - 在 .add() 之后无法 .getKey() 到 Cloud Firestore

python - 使用 ThreadPoolExecutor 强制线程超时

node.js - 避免使用 cy.wait() 等待页面由于中止的获取请求而加载 cypress

java - 带有 Guice 3.0 的 Tomcat8 WebSockets (JSR-356)

JTabbedPane 中的 Java 重新排序选项卡

javascript - 正则表达式:只有一个下划线实例