FTP文件管理项目 项目日报(五)

FTP文件管理项目 项目日报(五)

  • 发包实现
  • QT知识点
  • 心得体会和不足

发包实现

// 基础包
class PacketBase
{
protected:
    int m_Size;
    packet_header_t Head;
    packet_tali_t Tail;
    char* Body;
    char m_Data[MAX_PACKET_LENTH];

public:
    PacketBase();
    ~PacketBase();
    bool pack();
    bool unpack();
    char* getBody();
    packet_header_t* getHead();
    packet_tali_t* getTail();
    char* getData();
    int getSize();
    void setSize(int size);
    PacketBase& operator =(const PacketBase& packet);
};
//自己写的继承包
class SendPack : public PacketBase
{
public:
    SendPack();
    bool send_loginpack(int id,int pwd);
private:  
};
//包实现
bool SendPack::send_loginpack(int id, int pwd)
{
        int sz=sizeof(Login_t);
        this->setSize(sz);
        this->Body=new char[sz];

       Head.funcId=0x01;
       Head.optid=0x00;
       Head.syn=0x04;//判断包头
       //填充包体
       Login_t *body = (Login_t*)Body;
       //body=malloc(sizeof(id)+sizeof(pwd));
       body->id=id;
       body->pwd=pwd;
       Tail.pack_tail=0x05;
       return this->pack();
}
//socket类
class MyTcpSocket
{
public:
    static MyTcpSocket *getMySocket();
    QTcpSocket *client;
    ~MyTcpSocket(){p=NULL; isCon=false;}
private:
    MyTcpSocket();
    static MyTcpSocket *p;
    static bool isCon;
};
//socket实现
MyTcpSocket *MyTcpSocket::p = NULL;
bool MyTcpSocket::isCon = false;

MyTcpSocket::MyTcpSocket()
{
    if(!isCon)
    {
        client = new QTcpSocket;
        client->abort();
        //client->connectToHost(NULL,NULL);
        isCon = true;
    }
}

MyTcpSocket * MyTcpSocket::getMySocket()
{
    if(NULL == p)
        p = new MyTcpSocket();

    return p;
}

QT知识点

过滤器事件,控件安装过滤器事件,会让事件产生先执行过滤器事件,installEventFilter,实现bool eventFilter(QObject *listen, QEvent *event);
其中如果事件和控件产生冲突,可以使用event->ignore()去忽视掉该事件,从而让事件和控件都可以执行

心得体会和不足

1.没能完成QQ类似的下拉滑动删除效果
2.由于某些特殊原因,可能会停止该项目,实现的属实很抱歉

你可能感兴趣的:(qt,ftp,ftp)