如何检测之前连接的SSL / TCP套接字上的Internet断开连接?
我有一个阻塞基于select()
的SSL_read()
的线程。 主线程在需要时使用SSL_write()
写入。 在unit testing期间,我发现了一个问题:
- 客户端TCP套接字
connect()
到SSL上的服务器(TLS) - 一段时间后,禁用互联网
- 在客户端TCP / SSL套接字上写一些数据
即使没有SSL_write()
, SSL_write()
返回正确的写入字节数,而不是0或某些错误。 这种互联网断开是任意的,既不太高也不太低。
我的期望是,每当互联网断开连接时,套接字应该生成一些有趣的事件,这是可检测的,我将停止套接字+ SSL连接。
如果我必须建立一些客户端 – 服务器手工协议,那么这是可能的。
实现此类互联网检测的最佳方式是什么?
期望具有较少CPU周期和较少客户端服务器通信的解决方案。 我确信,这不是一个非常特殊的问题,因此必须先解决。
[PS:客户端套接字在Android和iOS等移动平台上开放,但我想知道一般解决方案。]
这是套接字的一般问题。 您无法获得经过认证的交付。 如果您想知道交易对手是否确实可以到达,您必须自己实施某种听力测试。
通常,成功写入套接字并不表示另一端的接收器可用性。