找回密码
 立即注册
收起左侧

QT 连接FTP问题(求大神解答)

5
回复
10961
查看
[复制链接]
累计签到:344 天
连续签到:1 天
来源: 2017-9-11 14:05:31 显示全部楼层 |阅读模式
10Qter豆
自从QT5后,连接FTP就去掉了QFtp类,改成QNetworkAccessManager实现ftp。最开始我使用编译ftp源码,可以正常使用FTP,但是问题出现了,我连接的ftp服务器是外网映射端口出来的,端口不是21。我发现只要端口不是21就连接不正常,也没有报错,就一直卡住。而如果端口换成21就不会。后来我换成QNetworkAccessManager实现ftp,发现也是同样问题。我可以肯定ftp服务器没有问题,因为我用第三方工具测过,也用C#编译ftp客户端,都没有问题。不知道有没有大神试过,请帮我一下,跪谢~~

回复

使用道具 举报

累计签到:344 天
连续签到:1 天
2017-9-11 14:10:12 显示全部楼层
QNetworkAccessManager *manager;
        QEventLoop *eventloop = new QEventLoop;
        QUrl url;
        url.setScheme("ftp");//设置该计划描述了URL的类型(或协议)
        url.setHost(ftpServer);//设置主机地址
    url.setPath(desPath+QDir(file.fileName()).dirName());//设置URL路径。也就是下载文件的名字
    url.setPort(ftpPort.toInt());//设置URL的端口。(就是这里,只要更改服务器中端口,除了21之外,都不能正常通信,映射端口也是,只要内网服务器不是21端口映**的,都会用问题)
    url.setUserName(userName);//设置tfp用户名
    url.setPassword(passWord); //设置ftp用户密码
        manager = new QNetworkAccessManager;//QNetworkAccessManager 允许发送网络请求和接收回复
        QNetworkReply *reply = manager->put(QNetworkRequest(url), data);
        //来个反馈
        connect(manager, SIGNAL(finished(QNetworkReply*)), eventloop,SLOT(quit()));
        eventloop->exec();

        //无错误返回
        if(reply->error() == QNetworkReply::NoError)
        {
            qDebug()<<"成功";
        }
        else
        {
            qDebug()<<"失败!";
            qDebug()<<reply->errorString();
        }
回复

使用道具 举报

累计签到:1 天
连续签到:1 天
2017-9-12 23:00:12 显示全部楼层
不要用QNetworkAccessManager作为FTP,你违背了QT官方的初衷。QT有那么多的C/C++ FTP类库,你非要用这个??

点评

C/C++ FTP类库,有没有例子啊,官方初衷是让人怎么用QT链接ftp啊,起码告诉下啊  详情 回复 发表于 2017-9-13 16:07
那用什么啊,有没有例子啊,网上都是QNetworkAccessManager ftp这样的例子  详情 回复 发表于 2017-9-13 09:56
回复

使用道具 举报

累计签到:344 天
连续签到:1 天
2017-9-13 09:56:44 显示全部楼层
stlcours 发表于 2017-9-12 23:00
不要用QNetworkAccessManager作为FTP,你违背了QT官方的初衷。QT有那么多的C/C++ FTP类库,你非要用这个? ...

那用什么啊,有没有例子啊,网上都是QNetworkAccessManager ftp这样的例子
回复

使用道具 举报

累计签到:344 天
连续签到:1 天
2017-9-13 16:07:38 显示全部楼层
stlcours 发表于 2017-9-12 23:00
不要用QNetworkAccessManager作为FTP,你违背了QT官方的初衷。QT有那么多的C/C++ FTP类库,你非要用这个? ...

C/C++ FTP类库,有没有例子啊,官方初衷是让人怎么用QT链接ftp啊,起码告诉下啊
回复

使用道具 举报

累计签到:1 天
连续签到:1 天
2017-9-17 23:50:34 显示全部楼层
cai901022 发表于 2017-9-13 16:07
C/C++ FTP类库,有没有例子啊,官方初衷是让人怎么用QT链接ftp啊,起码告诉下啊 ...

QT5去掉QFTP的原因就是因为觉得这个库质量太低、功能太弱。用什么?开源的可以用curl,商业控件请自己搜,我就不在这里推荐了。不过我觉得你还是应该用商业控件,要多好用就有多好用:)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了