NOT_HANDSHAKING 和 FINISHED 的区别

use*_*513 2 java ssl

Q1: SSLEngine 的枚举 SSLEngineResult.HandshakeStatus 中的NOT_HANDSHAKINGFINISHED状态有什么区别?

Javadoc 只是说

FINISHED:SSLEngine 刚刚完成握手。

NOT_HANDSHAKING:SSLEngine 当前没有握手。

我特别想知道:

Q2:如果初始握手成功执行,引擎应该处于 FINISHED 状态还是 NOT_HANDSHAKING 状态?

让我怀疑的是:这篇文章的示例代码 SSLChannel.java ,告诉

case NOT_HANDSHAKING: 
     assert false : "doHandshake() should never reach the NOT_HANDSHAKING state";
Run Code Online (Sandbox Code Playgroud)

而在我的示例程序中,初始握手似乎以 NOT_HANDSHAKING 状态结束。所以我不知道这是正常还是错误状态。此外,官方的JSSE 参考指南也没有帮助,因为它只是说

// Handle other status:  // FINISHED or NOT_HANDSHAKING
    ...
Run Code Online (Sandbox Code Playgroud)

任何信息表示赞赏。

use*_*421 5

  • FINISHED 意味着你刚刚完成,它只出现在由 返回的握手状态对象中wrap()/unwrap()

  • NOT_HANDSHAKING 表示没有正在进行的握手,它由上面提到的状态对象和由 返回的状态对象返回getHandshakeStatus()