gpt4 book ai didi

c++ - 将现有的 QTcpSocket 变形为 QSslSocket

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:28:04 30 4
gpt4 key购买 nike

是否可以创建一个新的 QSslSocket 并让它获得现有 TCP 连接的所有权,并丢弃旧的 QTcpSocket,而不中断或关闭 TCP 连接?

我需要它在我的 FTP 服务器中实现显式 FTPS,这要求最初连接是未加密的,并且仅在 FTP 客户端请求时(命令 AUTH SSLAUTH TLS),如果出现,则启动 SSL/TLS 握手。

最佳答案

是的,这是可能的。最简单的方法是用 QSslSocket 替换 QTcpSocket。在您调用 startClientEncryption 之前,QSslSocket 的行为与普通的 QTcpSocket 完全一样(无加密)。之后 QSslSocket 将像普通的 QTcpSocket 一样工作,但所有通信都在后台加密。

使用它,我实际上能够在不到一小时内移植一个 10 万多行的项目以使用 SSL。

编辑

在未加密模式下使用QSslSocket 没有(真正的)开销,因为它只会调用相应的QTcpSocket 方法。例如读取方法(qsslsocket.cpp Qt 4.8.3):

if (d->mode == UnencryptedMode && !d->autoStartHandshake) {
readBytes = d->plainSocket->read(data, maxlen);
} else {
//encryption stuff

关于c++ - 将现有的 QTcpSocket 变形为 QSslSocket,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14258022/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com