qftp.h
上传用户:detong
上传日期:2022-06-22
资源大小:20675k
文件大小:5k
源码类别:

系统编程

开发平台:

Unix_Linux

  1. /****************************************************************************
  2. **
  3. ** Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies).
  4. ** Contact: Qt Software Information (qt-info@nokia.com)
  5. **
  6. ** This file is part of the QtNetwork module of the Qt Toolkit.
  7. **
  8. ** Commercial Usage
  9. ** Licensees holding valid Qt Commercial licenses may use this file in
  10. ** accordance with the Qt Commercial License Agreement provided with the
  11. ** Software or, alternatively, in accordance with the terms contained in
  12. ** a written agreement between you and Nokia.
  13. **
  14. **
  15. ** GNU General Public License Usage
  16. ** Alternatively, this file may be used under the terms of the GNU
  17. ** General Public License versions 2.0 or 3.0 as published by the Free
  18. ** Software Foundation and appearing in the file LICENSE.GPL included in
  19. ** the packaging of this file.  Please review the following information
  20. ** to ensure GNU General Public Licensing requirements will be met:
  21. ** http://www.fsf.org/licensing/licenses/info/GPLv2.html and
  22. ** http://www.gnu.org/copyleft/gpl.html.  In addition, as a special
  23. ** exception, Nokia gives you certain additional rights. These rights
  24. ** are described in the Nokia Qt GPL Exception version 1.3, included in
  25. ** the file GPL_EXCEPTION.txt in this package.
  26. **
  27. ** Qt for Windows(R) Licensees
  28. ** As a special exception, Nokia, as the sole copyright holder for Qt
  29. ** Designer, grants users of the Qt/Eclipse Integration plug-in the
  30. ** right for the Qt/Eclipse Integration to link to functionality
  31. ** provided by Qt Designer and its related libraries.
  32. **
  33. ** If you are unsure which license is appropriate for your use, please
  34. ** contact the sales department at qt-sales@nokia.com.
  35. **
  36. ****************************************************************************/
  37. #ifndef QFTP_H
  38. #define QFTP_H
  39. #include <QtCore/qstring.h>
  40. #include <QtNetwork/qurlinfo.h>
  41. #include <QtCore/qobject.h>
  42. QT_BEGIN_HEADER
  43. QT_BEGIN_NAMESPACE
  44. QT_MODULE(Network)
  45. #ifndef QT_NO_FTP
  46. class QFtpPrivate;
  47. class Q_NETWORK_EXPORT QFtp : public QObject
  48. {
  49.     Q_OBJECT
  50. public:
  51.     explicit QFtp(QObject *parent = 0);
  52.     virtual ~QFtp();
  53.     enum State {
  54.         Unconnected,
  55.         HostLookup,
  56.         Connecting,
  57.         Connected,
  58.         LoggedIn,
  59.         Closing
  60.     };
  61.     enum Error {
  62.         NoError,
  63.         UnknownError,
  64.         HostNotFound,
  65.         ConnectionRefused,
  66.         NotConnected
  67.     };
  68.     enum Command {
  69.         None,
  70.         SetTransferMode,
  71.         SetProxy,
  72.         ConnectToHost,
  73.         Login,
  74.         Close,
  75.         List,
  76.         Cd,
  77.         Get,
  78.         Put,
  79.         Remove,
  80.         Mkdir,
  81.         Rmdir,
  82.         Rename,
  83.         RawCommand
  84.     };
  85.     enum TransferMode {
  86.         Active,
  87.         Passive
  88.     };
  89.     enum TransferType {
  90.         Binary,
  91.         Ascii
  92.     };
  93.     int setProxy(const QString &host, quint16 port);
  94.     int connectToHost(const QString &host, quint16 port=21);
  95.     int login(const QString &user = QString(), const QString &password = QString());
  96.     int close();
  97.     int setTransferMode(TransferMode mode);
  98.     int list(const QString &dir = QString());
  99.     int cd(const QString &dir);
  100.     int get(const QString &file, QIODevice *dev=0, TransferType type = Binary);
  101.     int put(const QByteArray &data, const QString &file, TransferType type = Binary);
  102.     int put(QIODevice *dev, const QString &file, TransferType type = Binary);
  103.     int remove(const QString &file);
  104.     int mkdir(const QString &dir);
  105.     int rmdir(const QString &dir);
  106.     int rename(const QString &oldname, const QString &newname);
  107.     int rawCommand(const QString &command);
  108.     qint64 bytesAvailable() const;
  109.     qint64 read(char *data, qint64 maxlen);
  110. #ifdef QT3_SUPPORT
  111.     inline QT3_SUPPORT qint64 readBlock(char *data, quint64 maxlen)
  112.     { return read(data, qint64(maxlen)); }
  113. #endif
  114.     QByteArray readAll();
  115.     int currentId() const;
  116.     QIODevice* currentDevice() const;
  117.     Command currentCommand() const;
  118.     bool hasPendingCommands() const;
  119.     void clearPendingCommands();
  120.     State state() const;
  121.     Error error() const;
  122.     QString errorString() const;
  123. public Q_SLOTS:
  124.     void abort();
  125. Q_SIGNALS:
  126.     void stateChanged(int);
  127.     void listInfo(const QUrlInfo&);
  128.     void readyRead();
  129.     void dataTransferProgress(qint64, qint64);
  130.     void rawCommandReply(int, const QString&);
  131.     void commandStarted(int);
  132.     void commandFinished(int, bool);
  133.     void done(bool);
  134. #ifdef QT3_SUPPORT
  135. public:
  136.     QT3_SUPPORT_CONSTRUCTOR QFtp(QObject *parent, const char *name);
  137. #endif
  138. private:
  139.     Q_DISABLE_COPY(QFtp)
  140.     Q_DECLARE_PRIVATE(QFtp)
  141.     Q_PRIVATE_SLOT(d_func(), void _q_startNextCommand())
  142.     Q_PRIVATE_SLOT(d_func(), void _q_piFinished(const QString&))
  143.     Q_PRIVATE_SLOT(d_func(), void _q_piError(int, const QString&))
  144.     Q_PRIVATE_SLOT(d_func(), void _q_piConnectState(int))
  145.     Q_PRIVATE_SLOT(d_func(), void _q_piFtpReply(int, const QString&))
  146. };
  147. #endif // QT_NO_FTP
  148. QT_END_NAMESPACE
  149. QT_END_HEADER
  150. #endif // QFTP_H