zoukankan      html  css  js  c++  java
  • FTP

    FZ软件分两个,服务器和客户端,已经写得非常的好的,完全可以满足工作需要,所以我只是对FTP原理做一下了解,具体编程不做太深的掌握。

    Qt对于FTP和HTTP都使用同一个类来完成:QNetworkAccessManager

    转:

    FTPManager.h

    #ifndef FTP_MANAGER
    #define FTP_MANAGER
    
    #include <QUrl>
    #include <QFile>
    #include <QNetworkReply>
    #include <QNetworkAccessManager>
    
    class FtpManager : public QObject
    {
        Q_OBJECT
    
    public:
        explicit FtpManager(QObject *parent = 0);
        // 设置地址和端口
        void setHostPort(const QString &host, int port = 21);
        // 设置登录 FTP 服务器的用户名和密码
        void setUserInfo(const QString &userName, const QString &password);
        // 上传文件
        void put(const QString &fileName, const QString &path);
        // 下载文件
        void get(const QString &path, const QString &fileName);
    
    signals:
        void error(QNetworkReply::NetworkError);
        // 上传进度
        void uploadProgress(qint64 bytesSent, qint64 bytesTotal);
        // 下载进度
        void downloadProgress(qint64 bytesReceived, qint64 bytesTotal);
    
    private slots:
        // 下载过程中写文件
        void finished();
    
    private:
        QUrl m_pUrl;
        QFile m_file;
        QNetworkAccessManager m_manager;
    };
    
    #endif // FTP_MANAGER

    FTPManager.cpp

    #include <QFileInfo>
    #include "FTPManager.h"
    
    FtpManager::FtpManager(QObject *parent)
        : QObject(parent)
    {
        // 设置协议
        m_pUrl.setScheme("ftp");
    }
    
    // 设置地址和端口
    void FtpManager::setHostPort(const QString &host, int port)
    {
        m_pUrl.setHost(host);
        m_pUrl.setPort(port);
    }
    
    // 设置登录 FTP 服务器的用户名和密码
    void FtpManager::setUserInfo(const QString &userName, const QString &password)
    {
        m_pUrl.setUserName(userName);
        m_pUrl.setPassword(password);
    }
    
    // 上传文件
    void FtpManager::put(const QString &fileName, const QString &path)
    {
        QFile file(fileName);
        file.open(QIODevice::ReadOnly);
        QByteArray data = file.readAll();
    
        m_pUrl.setPath(path);
        QNetworkReply *pReply = m_manager.put(QNetworkRequest(m_pUrl), data);
    
        connect(pReply, SIGNAL(uploadProgress(qint64, qint64)), this, SIGNAL(uploadProgress(qint64, qint64)));
        connect(pReply, SIGNAL(error(QNetworkReply::NetworkError)), this, SIGNAL(error(QNetworkReply::NetworkError)));
    }
    
    // 下载文件
    void FtpManager::get(const QString &path, const QString &fileName)
    {
        QFileInfo info;
        info.setFile(fileName);
    
        m_file.setFileName(fileName);
        m_file.open(QIODevice::WriteOnly | QIODevice::Append);
        m_pUrl.setPath(path);
    
        QNetworkReply *pReply = m_manager.get(QNetworkRequest(m_pUrl));
    
        connect(pReply, SIGNAL(finished()), this, SLOT(finished()));
        connect(pReply, SIGNAL(downloadProgress(qint64, qint64)), this, SIGNAL(downloadProgress(qint64, qint64)));
        connect(pReply, SIGNAL(error(QNetworkReply::NetworkError)), this, SIGNAL(error(QNetworkReply::NetworkError)));
    }
    
    // 下载过程中写文件
    void FtpManager::finished()
    {
        QNetworkReply *pReply = qobject_cast<QNetworkReply *>(sender());
        switch (pReply->error()) {
        case QNetworkReply::NoError : {
            m_file.write(pReply->readAll());
            m_file.flush();
        }
            break;
        default:
            break;
        }
    
        m_file.close();
        pReply->deleteLater();
    }


    下面对FZ软件配置做说明:
    一、服务器
    1、打开FZserver,Edit-》Users,选择General,add添加服务器名字,password打上勾设置密码
    2、选择Shared folders,add添加服务器路径,选择D盘吧,右边的Files和Directoris是客户端对D盘的权限
    3、再打开Edit-》Setting,有个Logging,Enable logging to file打上勾
    二、客户端
    打开FZclient,输入主机:ftp://192.168.1.100(服务器IP),输入用户名和密码,端口可不填(21是FTP,22是SFTP),快速连接就行了

  • 相关阅读:
    【shell】awk引用外部变量
    【shell】获取第10+个位置参数
    【ELK】Elasticsearch的备份和恢复
    【linux】crontab的环境变量问题
    【linux】如何给sudo的root设置环境变量
    【zabbix】自动注册,实现自动发现agent并添加监控(agent不需要任何配置)
    【windows】如何让一个程序开机自启动
    【linux】如何查看进程运行在那颗cpu上
    【Windows】修改远程桌面端口号
    分享知识-快乐自己:mongodb 安装部署(linux)
  • 原文地址:https://www.cnblogs.com/judes/p/7098116.html
Copyright © 2011-2022 走看看