【发布时间】:2016-02-01 19:42:26
【问题描述】:
我有一个客户端程序,它使用基于消息的协议与服务器通信。每个请求都与 1 个或多个响应匹配。
多个请求可以同时在一个套接字上排队,并且 I/O 使用非阻塞 I/O 在单独的线程上完成。该算法基本上是使用 select() 等待套接字变得可读和/或可写(基于是否有发送请求和/或读取响应),然后执行读取和/或写入。这很好用。
现在,如果我在套接字上启用 SSL,我们必须使用 SSL_Read()/SSL_Write() 而不是 send()/recv()。现在,我的问题是,我可以在 SSL_Read() 因 WANT_READ/WANT_WRITE 失败(反之亦然)之后调用 SSL_Write(),还是必须继续调用 SSL_Write() 直到它成功/失败?文档似乎没有明确排除这一点,但这里有点模糊。
【问题讨论】:
-
经过一番谷歌搜索后,似乎可以混合使用 SSL_read() 和 SSL_write():marc.info/?l=openssl-dev&m=124312461512355&w=2
标签: ssl openssl nonblocking