c - 为同一端口上现有 DTLS 连接上的传入 DTLS 连接获取 SSL_ERROR_SYSCALL

标签 c openssl cryptography dtls

在现有的 DTLS 连接上,即 DTLS 握手已在端口 5000 上成功完成,如果服务器收到传入的 DTLS 连接,即 DTLS 客户端问候数据包,则 SSL_read 正在生成 SSL_ERROR_SYSCALL

谁能告诉我原因。

场景是客户端在服务器的5000端口与服务器建立了DTLS连接。客户端更改的 IP 地址可能是由于从 Wi-Fi 过渡到 3G 或反之亦然。因此,现在客户端将再次尝试在服务器的同一端口 5000 上与服务器建立 DTLS 连接。

请大家告诉我

  • 问题 1。为什么 SSL_read 生成错误 SSL_ERROR_SYSCALL 以及如何才能继续?

  • 问题 2。我们是否可以在同一端口上的现有 DTLS 连接上处理另一个传入的 DTLS 连接,而无需清理已经存在的 DTLS 连接?

在此先感谢您的帮助, 维内·斯里瓦斯塔瓦

最佳答案

已找到问题的解决方案。

确定的问题有两个:

  1. 在具有另一个 DLTS 连接的端口上获得传入 DTLS 连接时,需要生成另一个 SSL 句柄并将其视为单独的 DTLS 连接。

  2. SSL_Read 调用中提供的长度必须正确。

在提供适当的参数并生成新的 SSL 句柄后,问题就解决了。无论如何感谢评论。

关于c - 为同一端口上现有 DTLS 连接上的传入 DTLS 连接获取 SSL_ERROR_SYSCALL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38390632/

相关文章:

openssl - 什么是公钥 header 和公钥信息?

c - 错误: Find Largest Number in given numbers

c - 分段故障

php - SSL 工具不适用于 MySQL Workbench

openssl - FreeIPA 外部 CA(中间 CA)

c - SSL_CTX_set_cert_verify_callback 获取链表

c++ - 用于 C 密码学的快速伪随机数生成器

Android AES 加密错误垫 block 损坏

c++ - 如何在 C++ 结构中表示每个 mips 指令行?

c - 结构中字节数组的对齐