⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 protocolversion3.h

📁 用qt4 编写的局域网聊天工具
💻 H
字号:
/*************************************************************************** *   Copyright (C) 2007 by Anistratov Oleg                                 * *   ower86@gmail.com                                                      * *                                                                         * *   This program is free software; you can redistribute it and/or modify  * *   it under the terms of the GNU General Public License version 2        * *   as published by the Free Software Foundation;                         * *                                                                         * *   This program is distributed in the hope that it will be useful,       * *   but WITHOUT ANY WARRANTY; without even the implied warranty of        * *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         * *   GNU General Public License for more details.                          * *                                                                         * ***************************************************************************/#ifndef PROTOCOLVERSION3_H#define PROTOCOLVERSION3_H#include <abstractprotocol.h>/**        @author Anistratov Oleg <ower86@gmail.com>*/class ProtocolVersion3 : public AbstractProtocol{  private:    static const char* m_programId;  public:    ProtocolVersion3();    ~ProtocolVersion3();    // Protocol information functions    uint  protocolVersion() const {return 3;}    uint  protocolLen    () const {return 69;}    const char* programId() const {return m_programId;}    uint optionsLen() const {return 0;}    // NOTE size of char* buf in following functions must be at least AbstractChatCore::protocolLen() bytes    QString programId       (const char* buf){return QString::fromAscii(buf, 18);} // 18 bytes    // Only for server mode    uint    packetSize      (const char* buf){return str2US (buf + 16);} // 2    uint    programVersion  (const char* buf){return str2US (buf + 18);} // 2    uint    protocolVersion (const char* buf){return str2US (buf + 20);} // 2    quint64 destIp          (const char* buf){return str2ULL(buf + 22);} // 8    quint64 srcIp           (const char* buf){return str2ULL(buf + 30);} // 8    uint    packetType      (const char* buf){return       *(buf + 38);} // 1    uint    packetId        (const char* buf){return str2US (buf + 39);} // 2    uint    fragmentSize    (const char* buf){return str2US (buf + 41);} // 2    uint    packetNum       (const char* buf){return str2UL (buf + 43);} // 4    quint64 time            (const char* buf){return str2ULL(buf + 47);} // 8    uint    channelType     (const char* buf){return str2UL (buf + 55);} // 4    uint    compNameLen     (const char* buf){return       *(buf + 59);} // 1    uint    userNameLen     (const char* buf){return       *(buf + 60);} // 1    uint    messageLen      (const char* buf){return str2UL (buf + 61);} // 4    uint    parametrsLen    (const char* buf){return str2UL (buf + 65);} // 4    uint    optionsLen      (const char* /*buf*/){return 0;}    bool    compressed      (const char* /*buf*/){return false;}    QString compName        (const char* buf, uint sz);    QString userName        (const char* buf, uint sz);    QString message         (const char* buf, uint sz);    QByteArray parametrs    (const char* buf, uint sz);    void setProgramId      (char* buf){strncpy(buf, programId(), 18);}    // Only for server mode    void setPacketSize     (char* buf, uint sz){catUS2str(buf + 16, sz);} // 2    void setProgramVersion (char* buf){catUS2str(buf + 18, Globals::VersionID);}    void setProtocolVersion(char* buf){catUS2str(buf + 20, protocolVersion());}    void setDestIp         (char* buf, quint64 ip){catULL2str(buf + 22, ip);} // 8    void setSrcIp          (char* buf, quint64 ip){catULL2str(buf + 30, ip);} // 8    void setPacketType     (char* buf, uint  type){(buf[38] = type);} // 1    void setPacketId       (char* buf, uint    id){catUS2str(buf + 39, id);} // 2    void setFragmentSize   (char* buf, uint    sz){catUS2str(buf + 41, sz);} // 2    void setPacketNum      (char* buf, quint32 nm){catUL2str (buf + 43, nm);} // 4    void setTime           (char* buf, quint64 tm){catULL2str(buf + 47, tm);} // 8    void setChannelType    (char* buf, quint32 id){catUL2str (buf + 55, id);} // 4    void setCompNameLen    (char* buf, uint    sz){buf[59] = sz;} // 1    void setUserNameLen    (char* buf, uint    sz){buf[60] = sz;} // 1    void setMessageLen     (char* buf, quint32 sz){catUL2str(buf + 61, sz);} // 4    void setParametrsLen   (char* buf, quint32 sz){catUL2str(buf + 65, sz);} // 4    void setOptionsLen     (char* /*buf*/, quint32 /*sz*/){}    void setCompressed     (char* /*buf*/, bool     /*b*/){}    void setCompName       (char* buf, const QString& name)    {strncpy(buf + 69, name.toUtf8().data(), compNameLen(buf));}    void setUserName       (char* buf, const QString& name) // ??    {strncpy(buf + 69 + compNameLen(buf), name.toUtf8().data(), userNameLen(buf));}    void setMessage        (char* buf, const QString& msg) // ??    {memcpy(buf + 69 + compNameLen(buf) + userNameLen(buf), msg.toUtf8().data(), messageLen(buf));}    void setParametrs      (char* buf, const QByteArray& pars) // ??    {memcpy(buf + 69 + compNameLen(buf) + userNameLen(buf) + messageLen(buf), pars.data(), parametrsLen(buf));}};#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -