Q1: SSLEngine的枚举SSLEngineResult.HandshakeStatus中的状态 NOT_HANDSHAKING 和 FINISHED 有什么区别?
Javadoc只是说
结束:SSLEngine刚刚完成握手。
NOT_HANDSHAKING :SSLEngine目前没有握手。
我特别想知道:
Q2:如果初始握手已成功执行,引擎应处于FINISHED状态还是状态NOT_HANDSHAKING?
让我怀疑的是:示例代码SSLChannel.java到this article,告诉
case NOT_HANDSHAKING:
assert false : "doHandshake() should never reach the NOT_HANDSHAKING state";
在我的示例程序中,初始握手似乎以状态NOT_HANDSHAKING结束。所以我不知道这是否正常,或者这是一个错误的状态。官方JSSE Refernce Guide也没有任何帮助,因为它只是说
// Handle other status: // FINISHED or NOT_HANDSHAKING
...
任何信息都表示赞赏。
答案 0 :(得分:3)
FINISHED表示您已完成 ,并且它只出现在wrap()/unwrap()
返回的握手状态对象中。
NOT_HANDSHAKING表示正在进行握手,上面提到的状态对象和getHandshakeStatus()
返回的状态对象都会返回。