gpt4 book ai didi

c++ - OpenSSL BIO 和 SSL_read

转载 作者:太空宇宙 更新时间:2023-11-03 14:30:42 24 4
gpt4 key购买 nike

在我们的客户端/服务器应用程序中,我们使用 TLS/TCP 协议(protocol)进行消息传递。一段时间后,应用程序之间会发生消息转移(消息在开始时以正确的顺序发送和接收),即客户端向服务器发送第 1000 条消息并收到第 999 条消息的响应。嫌疑人在客户端,我们在客户端独立实现 TCP 和 TLS 层,即不将 TCP 套接字绑定(bind)到 SSL 对象(通过 SSL_set_fd()),而是使用 BIO。当客户端应用程序从服务器获得响应时(非常确定消息在服务器中被正确处理,客户端 TCP 层正确接收消息等),消息被转发到 SSL 层。客户端应用程序首先将消息写入 BIO:

BIO_write(readBio, data, length);

然后在 SSL 层的另一个函数中,使用 SSL_read() 读取消息:

res = SSL_read (ssl, buffer, length);

读取操作成功完成,但我的目标是检查BIO中是否还有其他记录要读取。我考虑过使用方法 SSL_pending() 但似乎应该使用这个方法来检查 SAME 记录中是否还有字节。如果我们的怀疑是正确的,我想检查一下 BIO 中是否还有另一条记录,以便立即处理所有消息。你能帮我解决这个问题吗?提前致谢。

最佳答案

SSL_pending告诉您当前解密的 SSL 记录中是否有数据尚未被 SSL_read 读取。 BIO_pending可用于查明 BIO 中是否已经存在未被 SSL 层处理的数据。要查明套接字级别是否有未读数据,请使用 MSG_PEEK .

关于c++ - OpenSSL BIO 和 SSL_read,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52927979/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com