获取Openssl"关闭通知"没有" SSL_read",有办法吗?

时间:2018-05-08 00:40:42

标签: sockets openssl raspbian

我最近升级了在Raspberry Pi Zero / w(Raspbian Stretch)上运行的BLE数据包捕获应用程序,以便在将数据包转发到云服务器时使用OpenSSL。云服务器只接收数据包并将它们存储在数据库中,Pi上的应用程序只是将数据包发送到云服务器。所以它是从Pi到云服务器的单向对话。

问题是云服务器会在一段时间不活动后关闭连接。所以它调用SSL_shutdown(),但在Pi上SSL_RECEIVED_SHUTDOWN标志永远不会被设置,除非我调用SSL_read()(或偷看)。

此外,即使在服务器拨打电话后,套接字上的轮询也不会在Pi上显示SSL_ERROR_WANT_READ

所以,最重要的是,我不得不经常致电SSL_read()来抓住关机。这是正常的吗?还有另一种方法更有意义吗?

我使用非阻塞套接字,所以它似乎不会伤害任何东西,但它似乎很好,因为云服务器永远不会发送任何数据(所以那里有's's' s永远不会有任何实际阅读的内容。)

无论如何,我花了几个小时研究和尝试各种方法,但这是我发现让它发挥作用的唯一方法。

0 个答案:

没有答案