亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? torrentclient.h

?? 基于QT4圖形庫的BT下載客戶端源碼
?? H
字號:
/****************************************************************************
**
** Copyright (C) 2004-2006 Trolltech ASA. All rights reserved.
**
** This file is part of the example classes of the Qt Toolkit.
**
** Licensees holding a valid Qt License Agreement may use this file in
** accordance with the rights, responsibilities and obligations
** contained therein.  Please consult your licensing agreement or
** contact sales@trolltech.com if any conditions of this licensing
** agreement are not clear to you.
**
** Further information about Qt licensing is available at:
** http://www.trolltech.com/products/qt/licensing.html or by
** contacting info@trolltech.com.
**
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
**
****************************************************************************/

#ifndef TORRENTCLIENT_H
#define TORRENTCLIENT_H

#include <QBitArray>
#include <QHostAddress>

class MetaInfo;
class PeerWireClient;
class TorrentClientPrivate;
class TorrentPeer;
class TorrentPiece;
template<typename T> class QList;
class QTimerEvent;

class TorrentPeer {
public:
    QHostAddress address;
    quint16 port;
    QString id;
    bool interesting;
    bool seed;
    uint lastVisited;
    uint connectStart;
    uint connectTime;
    QBitArray pieces;
    int numCompletedPieces;

    inline bool operator==(const TorrentPeer &other)
    {
        return port == other.port
            && address == other.address
            && id == other.id;
    }
};

class TorrentClient : public QObject
{
    Q_OBJECT

public:
    enum State {
        Idle,
        Paused,
        Stopping,
        Preparing,
        Searching,
        Connecting,
        WarmingUp,
        Downloading,
        Endgame,
        Seeding
    };
    enum Error {
        UnknownError,
        TorrentParseError,
        InvalidTrackerError,
        FileError,
        ServerError
    };

    TorrentClient(QObject *parent = 0);
    ~TorrentClient();

    bool setTorrent(const QString &fileName);
    bool setTorrent(const QByteArray &torrentData);
    MetaInfo metaInfo() const;

    void setMaxConnections(int connections);
    int maxConnections() const;

    void setDestinationFolder(const QString &directory);
    QString destinationFolder() const;

    void setDumpedState(const QByteArray &dumpedState);
    QByteArray dumpedState() const;

    // Progress and stats for download feedback.
    qint64 progress() const;
    void setDownloadedBytes(qint64 bytes);
    qint64 downloadedBytes() const;
    void setUploadedBytes(qint64 bytes);
    qint64 uploadedBytes() const;
    int connectedPeerCount() const;
    int seedCount() const;
   
    // Accessors for the tracker
    QByteArray peerId() const;
    QByteArray infoHash() const;
    quint16 serverPort() const;

    // State and error.
    State state() const;
    QString stateString() const;
    Error error() const;
    QString errorString() const;

signals:
    void stateChanged(TorrentClient::State state);
    void error(TorrentClient::Error error);

    void downloadCompleted();
    void peerInfoUpdated();
    
    void dataSent(int uploadedBytes);
    void dataReceived(int downloadedBytes);
    void progressUpdated(int percentProgress);
    void downloadRateUpdated(int bytesPerSecond);
    void uploadRateUpdated(int bytesPerSecond);

    void stopped();

public slots:
    void start();
    void stop();
    void setPaused(bool paused);
    void setupIncomingConnection(PeerWireClient *client);

protected slots:
    void timerEvent(QTimerEvent *event);

private slots:
    // File management
    void sendToPeer(int readId, int pieceIndex, int begin, const QByteArray &data);
    void fullVerificationDone();
    void pieceVerified(int pieceIndex, bool ok);
    void handleFileError();

    // Connection handling
    void connectToPeers();
    QList<TorrentPeer *> weighedFreePeers() const;
    void setupOutgoingConnection();
    void initializeConnection(PeerWireClient *client);
    void removeClient();
    void peerPiecesAvailable(const QBitArray &pieces);
    void peerRequestsBlock(int pieceIndex, int begin, int length);
    void blockReceived(int pieceIndex, int begin, const QByteArray &data);
    void peerWireBytesWritten(qint64 bytes);
    void peerWireBytesReceived(qint64 bytes);
    int blocksLeftForPiece(const TorrentPiece *piece) const;

    // Scheduling
    void scheduleUploads();
    void scheduleDownloads();
    void schedulePieceForClient(PeerWireClient *client);
    void requestMore(PeerWireClient *client);
    int requestBlocks(PeerWireClient *client, TorrentPiece *piece, int maxBlocks);
    void peerChoked();
    void peerUnchoked();

    // Tracker handling
    void addToPeerList(const QList<TorrentPeer> &peerList);
    void trackerStopped();

    // Progress
    void updateProgress(int progress = -1);

private:
    TorrentClientPrivate *d;
    friend class TorrentClientPrivate;
};

#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区在线免费观看| 韩日av一区二区| 精品一区二区成人精品| 99久精品国产| 久久综合九色综合欧美就去吻| 国产精品久久久久久久久免费桃花| 性感美女久久精品| 成人av免费在线| 亚洲精品在线观| 亚洲bdsm女犯bdsm网站| zzijzzij亚洲日本少妇熟睡| 精品国产91亚洲一区二区三区婷婷| 一区二区三区欧美视频| 成人h动漫精品一区二区| 日韩免费看网站| 五月天亚洲婷婷| 欧美性猛交xxxxxxxx| 亚洲欧美成人一区二区三区| 国产成人鲁色资源国产91色综 | 欧美精品乱码久久久久久| 亚洲国产精品二十页| 精品一区二区三区香蕉蜜桃| 69久久99精品久久久久婷婷 | 国产三区在线成人av| 美女在线一区二区| 在线不卡中文字幕| 午夜精品免费在线| 欧美精品乱人伦久久久久久| 亚洲线精品一区二区三区| 在线视频综合导航| 一区二区三区日本| 欧美三级日韩三级| 五月婷婷综合在线| 91精品国产综合久久婷婷香蕉 | 国产精品视频一二三| 国产精品一区二区在线播放| 久久久国产一区二区三区四区小说 | 精品中文字幕一区二区| 日韩精品一区二区三区中文精品 | 九色porny丨国产精品| 日韩欧美久久久| 久久99蜜桃精品| 2023国产一二三区日本精品2022| 狠狠色丁香久久婷婷综| 国产亚洲精品免费| a美女胸又www黄视频久久| 中文字幕日韩欧美一区二区三区| 99国产精品一区| 亚洲国产cao| 欧美成人三级在线| 国产精品996| 亚洲黄色免费电影| 337p亚洲精品色噜噜| 极品美女销魂一区二区三区免费| 久久精品免费在线观看| 91浏览器入口在线观看| 亚洲va韩国va欧美va| 精品成人免费观看| 一本久久综合亚洲鲁鲁五月天| 亚洲一区在线看| 日韩精品一区二区三区在线播放| 福利电影一区二区三区| 亚洲国产一区二区视频| 精品久久久久久久久久久久包黑料 | 亚洲女人****多毛耸耸8| 欧美综合久久久| 精品一区二区国语对白| 国产精品久久久久久久久晋中| 欧美亚一区二区| 精品一区二区三区的国产在线播放| 国产精品美女一区二区在线观看| 欧美四级电影在线观看| 国内外成人在线| 亚洲毛片av在线| 精品成人a区在线观看| 日本视频一区二区三区| 久久亚洲捆绑美女| 一本一本大道香蕉久在线精品| 日韩成人精品在线| 中文子幕无线码一区tr| 日韩一区二区精品在线观看| 北岛玲一区二区三区四区| 免费在线看一区| 亚洲精品久久嫩草网站秘色| 久久久久久麻豆| 制服丝袜亚洲精品中文字幕| 95精品视频在线| 国产在线精品视频| 日韩国产欧美三级| 亚洲免费在线视频| 国产精品网站在线| 久久婷婷一区二区三区| 欧美一区二区三区免费大片| 91福利区一区二区三区| 成人黄色在线网站| 国产成人午夜99999| 在线视频观看一区| 国产一区二三区| 一个色在线综合| 国产精品久久久久桃色tv| 欧美成人伊人久久综合网| 欧美性xxxxxxxx| 色婷婷综合久久久久中文| 成人免费的视频| 国内精品免费**视频| 日本成人超碰在线观看| 亚洲va欧美va天堂v国产综合| 亚洲男人都懂的| 日韩码欧中文字| 亚洲视频一区二区免费在线观看| 国产精品午夜在线| 国产日韩一级二级三级| 久久久久国产一区二区三区四区| 精品欧美一区二区三区精品久久| 在线播放中文一区| 欧美一区二区三区系列电影| 欧美日韩一区视频| 欧美伦理视频网站| 欧美一区二区三区在线电影| 欧美性淫爽ww久久久久无| 99久久精品免费观看| 丁香亚洲综合激情啪啪综合| 成人激情黄色小说| 成人av电影观看| 一本久久精品一区二区| 欧美中文字幕不卡| 4438x亚洲最大成人网| 日韩视频中午一区| 欧美精品一区二区三区蜜臀| www国产亚洲精品久久麻豆| 久久亚洲免费视频| 中文字幕制服丝袜成人av| 亚洲乱码国产乱码精品精98午夜| 一区二区免费看| 日韩av电影一区| 国产一区二区精品久久| 成人黄色小视频| 欧美私模裸体表演在线观看| 欧美一级午夜免费电影| 久久久青草青青国产亚洲免观| 国产精品国产精品国产专区不片| 怡红院av一区二区三区| 男人的天堂亚洲一区| 国产精品538一区二区在线| 色噜噜久久综合| 日韩天堂在线观看| 中文字幕一区二区三区精华液 | xfplay精品久久| 2024国产精品| 亚洲人吸女人奶水| 婷婷丁香久久五月婷婷| 国产一区二区三区四区在线观看| 成人午夜精品在线| 69久久99精品久久久久婷婷 | 制服丝袜在线91| 久久久久久亚洲综合影院红桃| 日韩理论片网站| 另类人妖一区二区av| 91视视频在线观看入口直接观看www | 国产蜜臀97一区二区三区| 亚洲乱码国产乱码精品精的特点 | 国产精品久久综合| 午夜久久久久久| 丰满少妇在线播放bd日韩电影| 在线观看av一区| 久久久精品国产免大香伊| 亚洲成人精品一区| 北条麻妃一区二区三区| 日韩欧美国产电影| 亚洲图片自拍偷拍| 成人高清视频在线观看| 欧美一级理论片| 一区二区欧美国产| 成人综合激情网| 久久一区二区三区国产精品| 五月婷婷综合激情| 色婷婷亚洲婷婷| 国产欧美日韩不卡免费| 老司机免费视频一区二区| 欧美亚洲一区三区| 日韩欧美123| 色国产精品一区在线观看| 精品国产三级电影在线观看| 亚洲第一在线综合网站| www.久久久久久久久| 久久综合九色综合97婷婷女人 | 91久久免费观看| 中文字幕一区二区5566日韩| 韩国成人在线视频| 欧美一级午夜免费电影| 国产suv一区二区三区88区| 91精品国产一区二区三区| 亚洲成人动漫精品| 欧美午夜精品久久久久久超碰| 自拍偷拍国产精品| 91视频免费看| 中文字幕一区二区5566日韩| 99精品视频一区二区三区| 国产精品久久久久久福利一牛影视| 国产精品69毛片高清亚洲|