我有一个客户端程序,它使用基于消息的协议与服务器通信。每个请求都有一个或多个响应匹配。
多个请求可以同时在套接字上排队,I / O使用非阻塞I / O在单独的线程上完成。该算法基本上是等待套接字使用select()变得可读和/或可写(基于是否有发送和/或响应读取的请求),然后进行读取和/或写入。这很好。
现在,如果我在套接字上启用SSL,我们必须使用SSL_Read()/ SSL_Write()而不是send()/ recv()。现在,我的问题是,我可以在SSL_Read()失败后使用WANT_READ / WANT_WRITE(反之亦然)调用SSL_Write(),还是必须继续调用SSL_Write()直到成功/失败?文档似乎没有明确地排除这一点,但这里有点模糊。
答案 0 :(得分:-1)
在使用WANT_READ / WANT_WRITE(反之亦然)SSL_Read()失败后,我可以调用SSL_Write()吗
如果WANT_WRITE失败,您必须致电SSL_write().
否'我可以'。使用WANT_READ读取时不应该失败,因为 读取,除非我猜想是非阻塞模式。
或者我必须继续调用SSL_Write()直到成功/失败
是的,当它想要写一个你必须写的时候,你必须重复直到成功。没有'或'关于它。
我真的不明白你为什么要问。问题中是否存在拼写错误?