gpt4 book ai didi

c++ - C++ 应用程序中的 SSL 错误 SSL_ERROR_SYSCALL

转载 作者:太空宇宙 更新时间:2023-11-04 14:32:47 32 4
gpt4 key购买 nike

在我的 C++ 应用程序中,我在我的网络功能中使用了 open ssl。我在成功连接到套接字后立即看到,使用 SSL_read 的接收函数出现错误:SSL_ERROR_SYS_CALL。根据 SSL 文档,这就是它的意思:

Some I/O error occurred. The OpenSSL error queue may contain more information on the error. If the error queue is empty (i.e. ERR_get_error() returns 0), ret can be used to find out more about the error: If ret == 0, an EOF was observed that violates the protocol. If ret == -1, the underlying BIO reported an I/O error (for socket I/O on Unix systems, consult errno for details).

在我的例子中,ERR_get_error() 返回 0 和 ret == 0。这意味着“

an EOF was observed that violates the protocol.

你知道这是什么意思吗?我不明白。我需要检查或做什么才能解决此问题?

谢谢

最佳答案

雷米的回答是正确的,但让我澄清一下并扩展一下。

SSL_do_handshake()SSL_connect()SSL_accept()SSL_write()时的情况, SSL_read()SSL_shutdown() 返回 0,调用 SSL_get_error() 后返回 SSL_ERROR_SYSCALL 和一个实际的 errno 为 0 表示对端已关闭 TCP 连接,例如通过在没有正确关闭 SSL 的情况下调用 close()。这是一种完全正常和常见的情况,但就 TLS/SSL 而言,这不是正常的断开连接。因此,违反 SSL 协议(protocol)的是 EOF。

关于c++ - C++ 应用程序中的 SSL 错误 SSL_ERROR_SYSCALL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10224235/

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