2015-07-15 5 views
0

У меня есть sslServerSocket ссила соединения SSL без чтения()

setNeedClientAuth(true) 

Client установить соединение SSL и отправить клиенту привет. Но мой ServerSocket принимает клиент привет и сделать другие процедуры подключения SSL только после того, как я называю

read() 

от входного гнезда потока. Я использую StAX для чтения из сокета и создания XML. И я хочу установить соединение перед чтением, чтобы обрабатывать ошибки соединения отдельно. Я пытаюсь вызвать различные методы потока сокетов и сокетов для принудительного установления соединения ssl, но не повезло. Теперь я думаю о bufferReader - mark - read - reset, но, возможно, есть еще один вариант?

ответ

1

Звонок SSLSocket.startHandshake(). Он вызывается автоматически, если необходимо, на первом вводе-выводе, но вы также можете назвать его самим.

Однако, возможно, что вы хотите не только рукопожатие, но и сертификат партнера, который вы можете получить от SSLSession через SSLSession.getPeerCertificates() и друзей. Если вы позвоните по телефону SSLSocket.getSession() сразу после accept(), при необходимости он вызовет startHandshake(). Еще лучше добавьте HandshakeListener в сокет, проверьте идентичность сверстника, когда он вызывается, и закройте его, если вам не нравится одноранговый узел.

+0

Спасибо! Оно работает! – cynepnaxa