我需要在 C++Builder XE7 中使用 SSL 连接到服务器。我可以找到有关 HTTPS 和 SMTP 的内容,但找不到有关自定义连接的内容。在 BCB5 中,这要容易得多,我会使用自定义代码来完成,但现在使用 Android 和 iOS,事情需要做一些不同的事情,因为我们现在也需要支持这些产品。
我研究过 TIdSocketSSL,但我能找到的例子很少,它似乎需要一个最终来自 SMTP 或 HTTPS 的所有者。
最佳答案
C++Builder 随 Indy 一起提供,它具有一个可用于实现自定义协议(protocol)的 TIdTCPClient
组件。 Embarcadero 论坛、Indy 论坛、StackOverflow 以及各种博客上都有大量示例,演示如何使用 Indy 发送/接收自定义数据。
对于 SSL/TLS,只需在调用 Connect()
之前将 TIdSSLIOHandlerSocketOpenSSL
组件分配给 TIdTCPClient::IOHandler
属性,并配置其根据需要配置属性(证书、SSL/TLS 版本等)。当您想要执行 SSL 握手时,请将 TIdSSLIOHandlerOpenSSL::PassThrough
属性设置为 false。您可以在调用 Connect()
之前进行设置,以便在交换任何数据之前立即进行握手(又名隐式 SSL/TLS),也可以在交换未加密数据之后进行设置首先(又名显式 SSL/TLS),具体取决于您的协议(protocol)需求。
关于C++Builder XE 原始 SSL 套接字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29202174/