InputStream非阻塞读取操作

时间:2011-07-04 07:15:37

标签: java android

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

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

任何帮助都将不胜感激。

此致 阿米尔

2 个答案:

答案 0 :(得分:2)

  

但问题是,如果不是这样的话   这里阻止阻止呼叫。

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

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

答案 1 :(得分:0)

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