首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将现有QTcpSocket变形为QSslSocket

将现有QTcpSocket变形为QSslSocket
EN

Stack Overflow用户
提问于 2013-01-10 20:31:25
回答 1查看 1.5K关注 0票数 6

是否有可能在不中断或关闭QSslSocket连接的情况下,创建新的TCP并使其获得现有TCP连接的所有权,并丢弃旧的QTcpSocket?

我需要这个来在我的FTP服务器中实现显式FTPS,这要求最初连接是未加密的,并且只有在FTP客户端的请求(命令AUTH SSLAUTH TLS)时,才会启动SSL/TLS握手。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-10 21:31:57

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

使用它,我实际上能够在不到一个小时的时间内移植一个SSL项目来使用100k+。

编辑

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

代码语言:javascript
复制
if (d->mode == UnencryptedMode && !d->autoStartHandshake) {
    readBytes = d->plainSocket->read(data, maxlen);
} else {
//encryption stuff
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14258022

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档