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

4 篇文章 0 订阅

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

发包实现

// 基础包
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.由于某些特殊原因,可能会停止该项目,实现的属实很抱歉

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值