我正在Delphi 2007中使用Indy 10.6.2(SVN的当前版本)服务器组件,并在Delphi 6应用程序中使用客户端组件,当然还要使用OpenSSL。
我在客户端应用程序中收到“与SSL连接错误。观察到EOF违反了协议”。
据我在网上发现,这是由于服务器套接字关闭了其连接所致,例如,由于SSL版本不匹配或HTTP客户端与服务器之间的密码不匹配。听起来很合逻辑。
我想调试(在服务器端报告有关此不匹配的更多信息),但是Indy库(系统,核心,协议)中的代码在哪里,该代码检查并关闭服务器连接(拒绝客户端请求) ),如果发现有任何不兼容之处?
我的问题的答案可以解决“与SSL连接时出错。观察到EOF违反了协议”,但它在将来也可以帮助解决握手过程中的任何问题,即,如果我对拒绝的邮件实施更广泛的日志记录连接。
答案 0 :(得分:4)
Indy库(系统,核心,协议)中的代码在哪里发现,如果发现不兼容,该代码将检查并关闭服务器连接(拒绝客户端请求)?
无处,因为不是Indy进行检查。 OpenSSL本身在处理SSL握手时在内部进行检查。 OpenSSL具有套接字句柄。当它检测到握手问题时,它将立即关闭套接字连接,并向Indy返回错误,然后Indy关闭套接字句柄。