使用NIO时如何确保SocketChannel真正连接?

时间:2014-02-20 02:55:40

标签: java selector nio socketchannel broken-pipe

我正在研究Android上的NIO客户端程序,基本上它运行良好,但是当网络不可用时(WIFI被禁用等),我不知道如何区分套接字'真的'连接,即使没有可用的网络,SocketChannel.finishConnect()也总是返回true。如果我尝试写入未连接的SocketChannel,将发生Broken pipe异常。

所以我想知道如何确保SocketChannel真正连接?

1 个答案:

答案 0 :(得分:1)

  

如果我尝试写入未连接的SocketChannel,则会发生Broken pipe异常。

正确。

  

所以我想知道如何确保SocketChannel真正连接?

就是这样。没有API可以告诉你。 TCP不能那样工作。检测断开的TCP连接的唯一方法是尝试使用它。