boost asio-ssl async_write给我发了很多胡言乱语
boost asio ssl async_write send me mostly gibberish
我正在使用boost::asio::ssl 将非安全套接字转换为ssl
虽然使用非ssl一切都很好,但async_write给我发来的大多是胡言乱语。
有趣的是,当我在每个async_write之间放入sleep(1(时,我得到的大多是好数据,但有点胡言乱语(类似于"???@??"(
我发送数据的速度越快,它就越胡言乱语。。。我完全不明白这个问题!
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())
);
}
以下是我不睡觉时得到的结果(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
问题是您正在交错写入。。
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())
);
}
您应该只执行下一个async_write
,一旦第一个完成,即在done_writing
处理程序中。这就是为什么你打更多的电话时会收到垃圾。。。
相关文章:
- 提升 Asio SSL 无法第二次接收数据(第一次确定)
- C++ 关闭Boost ASIO SSL套接字的最佳方法是什么?
- 使用 asio+ssl,async_write不会发送数据
- 提升 ASIO SSL 写入部分数据
- 用于 asio SSL 上下文的单个证书
- 为什么没有asio::ssl::iostream?(以及如何实施)
- 从或写入boost :: asio :: ssl :: stream :: next_layer()旁路SSL解密/加密
- 提升/ASIO/SSL 抛出"undefined reference"错误
- 使用 boost::asio SSL 服务器减少每个连接的内存使用量
- boost::asio::ssl::context::context(boost::asic::ssl::context
- 在同一系统上运行的多个boost::asio-ssl客户端
- 提升 asio ssl:如果私钥传递上下文::use_private_key,则不调用密码回调
- 提升 asio - SSL async_read,从一个线程async_write
- boost::asio-ssl链接错误
- Boost ASIO:SSL握手()永远不会结束
- Boost的ASIO + SSL在某些情况下不起作用
- 可以在多个ssl流之间共享boost::asio::ssl::上下文
- Boost asio & ssl & error code
- boost asio SSL async_shutdown总是以错误结束
- boost asio-ssl async_write给我发了很多胡言乱语