java - InputStream 非阻塞读操作

标签 java android

我有这样的场景,我需要确认服务器端套接字是否关闭了连接。因此,为此我检查 if(in.read() ==-1) 如果 true ,这意味着服务器端关闭了连接。 但问题是,如果它没有阻塞,因为它阻塞了调用。我需要这样的解决方案,我可以在特定时间内读取非阻塞,或者在服务器端关闭连接时取消读取。 我正在创建像

socket = new Socket();
                 // if server is not available 3 seconds blocking call other wise Exception
                 socket.connect(new InetSocketAddress(serverAddress , serverPort),3000);

如有任何帮助,我们将不胜感激。

问候, 阿米尔

最佳答案

But problem is that if it does not it blocks here as it is blocking call.

这不是唯一的问题。还有一个更大的问题:如果有任何数据到达,它将丢弃一个字节的数据。你当然不能这样做。

你需要的是定时阅读。请参阅Socket.setSoTimeout()

关于java - InputStream 非阻塞读操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6568398/

相关文章:

java - 配置 Jackson 在 Spring Boot 2.0.0.M1 中使用 SNAKE_CASE "globally"

java - 在 Java 中使用 FUSE 库;尝试复制 hello.c 示例

android - 从 Activity 更改类变量值

java - 为什么STS有2个专家?

java - JMenuBar 下降到 "custom"JPanel 和 "erased"

java - 无法识别的请求 : { _request: evaluate } in visual studio code

安卓网络连接状态

android - 如何在 MainActivity 的框架布局中加载默认 fragment ?

java - android - 如何在 FIngerPrintHelper 类的主 Activity 中调用扩展 Asynctask 的类

javascript - 在移动浏览器 JavaScript 上重新加载页面