【问题标题】:Java NIO SocketChannel isOpen and isConnected methodsJava NIO SocketChannel isOpen 和 isConnected 方法
【发布时间】:2013-10-07 18:43:45
【问题描述】:

我对 NIO 套接字级编程非常陌生,在这里需要帮助。我的应用程序基于NIO socket,它使用Selectors 作为非阻塞通道。

想知道SocketChannel的isOpen()isConnected()方法在哪些场景下可以返回false

在向套接字写入数据之前,我们正在检查上述两种方法。并且间歇性地看到这些方法返回错误。

【问题讨论】:

  • 对于给定的连接,它们不应该是断断续续的。我建议您再次阅读这些方法的 javadocs ;)

标签: java sockets nio


【解决方案1】:

isOpen() 在你关闭它之前返回真。

如果您已连接或接受频道,isConnected() 将返回 true。

不断测试这些表明您不了解它们的用途。应用程序应该已经知道它自己的连接所处的状态。可能您认为它们表示连接的状态,并且当对等端断开连接时它们会发生变化。他们没有。

在向套接字写入数据之前,我们正在检查上述两种方法。并且间歇性地看到这些方法返回错误。

我对此表示怀疑。如果您看到这种情况,则说明您的代码中有错误。

【讨论】:

    猜你喜欢
    • 2016-10-03
    • 1970-01-01
    • 2011-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多