繁体   English   中英

InputStream 非阻塞读操作

[英]InputStream Non Blocking read operation

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

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

任何帮助,将不胜感激。

问候, 阿米尔

但问题是,如果它不在这里阻塞,因为它正在阻塞调用。

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

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

假设这是针对 TCP,您是否尝试过使用myClientSocket.isClosed()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM