我正在尝试在非阻塞模式下将 SSLengine 与 SocketChannels 一起使用。
握手正确完成,但是当我尝试从 channelsocket 读取和解密 http 帖子时,只有标题被解密并且正文消失:
<code>
int num=0;
while(num==0){
num=socketChannel.read(peerNetData);
if(num==-1)
break;
}
if (num == -1) {
System.out.println("channel closed");
} else if (num == 0) {
System.out.println("no bytes to read");
} else {
// Process incoming data
peerNetData.flip();
SSLEngineResult res = engine.unwrap(peerNetData, peerAppData);
//return a ok status
peerNetData.flip();
peerAppData.flip();
System.out.println(new String(peerNetData.array()));
System.out.println(new String(peerAppData.array()));
</code>
在 peerNetData 中打印加密数据时,我得到:
?>.//POST 测试 HTTP/1.1 Cache-Control: no-cache Content-Length: 20 Content-Type: application/octet-stream Host: 192.168.XX
?>.//?>.//?>.//?>.//?>.//?>.//?>.//?>.//?>.//?>.// ?>.// <--- 这里是加密字符
但是当我在 peerAppData 中打印解密的数据时,我得到了
POST 测试 HTTP/1.1/ Cache-Control: no-cache Content-Length: 20 Content-Type: application/octet-stream Host: 192.168.XX // 然后这里是三个空行。
这是SSlengine的解密问题吗?
谢谢
我还想添加该 unwrap 方法返回 OK 状态。