gpt4 book ai didi

ssl - 当其中一个返回 SSL_ERROR_WANT_READ 或 SSL_ERROR_WANT_WRITE 时,您能否交错调用 SSL_Read() 和 SSL_Write()?

转载 作者:太空宇宙 更新时间:2023-11-03 13:08:51 25 4
gpt4 key购买 nike

我有一个客户端程序,它使用基于消息的协议(protocol)与服务器通信。每个请求都匹配 1 个或多个响应。

多个请求可以同时在一个套接字上排队,并且 I/O 使用非阻塞 I/O 在单独的线程上完成。该算法基本上是使用 select() 等待套接字变得可读和/或可写(基于是否有发送请求和/或读取响应),然后进行读取和/或写入。这很好用。

现在,如果我在套接字上启用 SSL,我们必须使用 SSL_Read()/SSL_Write() 而不是 send()/recv()。现在,我的问题是,我可以在 SSL_Read() 因 WANT_READ/WANT_WRITE 失败后调用 SSL_Write() (反之亦然),还是必须继续调用 SSL_Write() 直到它成功/失败?文档似乎没有明确排除这种可能性,但这里有点含糊。

最佳答案

can I call SSL_Write() after SSL_Read() fails with WANT_READ/WANT_WRITE (or vice versa)

如果它因 WANT_WRITE 而失败,您必须调用 SSL_write()。 不可以。读取不应该因 WANT_READ 而失败,因为你正在读取,除非我猜是在非阻塞模式下。

or do I have to keep calling SSL_Write() until it succeeds/fails

是的,当它想要写你必须写,你必须重复直到成功。没有“或”。

我真的不明白你为什么要问。题目有错别字吗?

关于ssl - 当其中一个返回 SSL_ERROR_WANT_READ 或 SSL_ERROR_WANT_WRITE 时,您能否交错调用 SSL_Read() 和 SSL_Write()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35138931/

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