Я нахожусь в процессе преобразования моего небезопасного сокета в ssl, используя boost :: asio :: ssl
Хотя с non-ssl все работало нормально, async_write присылает мне в основном бред.
Самое смешное, что когда я помещаю sleep (1) между каждым async_write, я получаю в основном хорошие данные с небольшим бредом (что-то вроде "????? @ ??")
Чем быстрее я отправляю данные, тем больше бреда он получает ... Я полностью потерялся в этой проблеме!
initSSLConnection:
boost::asio::ssl::context *m_context = new boost::asio::ssl::context(m_acceptor.io_service(), boost::asio::ssl::context::sslv23);
m_context->set_options(boost::asio::ssl::context::default_workarounds
| boost::asio::ssl::context::no_sslv2
| boost::asio::ssl::context::single_dh_use);
m_context->set_password_callback(boost::bind(&Server::get_password, this));
m_context->use_certificate_chain_file("./ssl_key/cert.pem");
m_context->use_private_key_file("./ssl_key/key.pem", boost::asio::ssl::context::pem);
запись на сокете:
while (1) {
boost::asio::async_write(m_socket,
boost::asio::buffer(ss.str().c_str(), ss.str().size()),
boost::bind(&MyClass::done_writing,
shared_from_this())
);
}
Вот что я получаю, когда не ставлю sleep (1):
`?D`?@?pR???c??_?@?pR??c?@?pR??␌?@???␌?D◆?P0AE0004J0??@?⎻RP0AE0004J0??@?XJ┘?D◆?P0AE0004J0??X?┬±?> ␋┌≤C5700␌??┬±??> ␋┌≤C5700␌?????┐?> ␋┌≤C5700␌?????????┬±??┐?
?┴?^> ␋┌≤C5700␌??
?┴?^^> ␋┌≤C5700␌?????
?┴?> ␋┌≤C5700␌?V
??@
?┴?> ␋┌≤C◆????␋┌≤F1DA0?│?ADO14F⎼␋???@?⎻R
? ␋┌≤D9A90?┌?┬±?
?┴?┬±?
?┴??┐?ADO14F⎼␋⎻??@?⎻R?
?
6A7BD600?≠??┌?◆????␋┌≤21ADC?├???
␉
◆????␋┌≤21ADC?├???
◆????␋┌≤21ADC?├??◆????␋┌≤21ADC?├??
Кажется, что он закодирован или что-то ...
Я подключаюсь к серверу через этокомандная строка:
openssl s_client -ssl3 -connect 127.0.0.1:4242