Я пытаюсь использовать SSLengine с SocketChannels в неблокирующем режиме.
Рукопожатие выполняется правильно, но когда я пытаюсь прочитать и расшифровать http-сообщения из ChannelSocket, расшифровываются только заголовки, а тело исчезает:
<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 test HTTP/1.1 Cache-Control: no-cache Content-Length: 20 Content-Type: application/octet-stream Хост: 192.168.X.X
?>.//?>.//?>.//?>.//?>.//?>.//?>.//?>.//?>.//?>.// ?>.// ‹--- здесь зашифрованные символы
но когда я печатаю расшифрованные данные в peerAppData, я получаю
POST test HTTP/1.1/ Cache-Control: no-cache Content-Length: 20 Content-Type: application/octet-stream Host: 192.168.X.X // и затем здесь три пустые строки.
это проблема расшифровки с SSlengine??
Спасибо
Также я хотел бы добавить, что метод unwrap возвращает статус OK.
while(num==0)
? Извините, а что не так со всеми остальными номерами? - person Maarten Bodewes   schedule 07.10.2014