FTP文件管理项目 项目日报(六)
进度
计划 | 完成 |
---|---|
用户注册,找回密码,修改密码的发包和解包 | 用户注册,找回密码,修改密码的发包和解包 |
问题
暂无
解决方案
暂无
明日计划
1.了解Qt下文件操作部分的内容
2.了解Qt线程类的内容
技术点记录
//用户修改密码的发送和修改密码应答包的解析
//修改密码按钮槽函数
connect(this->amend_btn,SIGNAL(clicked()),this,SLOT(amend()));
//发送修改密码请求
void Amend_widget::amend()
{
sendamend = new SendPack;
//获取包体数据,此处为id和密码
char* phone;
QByteArray ba = phone_edit->text().toLatin1();
phone=ba.data();
sendamend->send_amendpack(id_edit->text().toInt(),pwd_edit->text().toInt(),phone);
tcpclient->write(sendamend->getData());
C_Pwd_t *nbody = (C_Pwd_t*)sendamend->getBody();
qDebug()<<"再次确认发送的id"<<nbody->id;
qDebug()<<"再次确认发送的pwd"<<nbody->pwd;
qDebug()<<"再次确认发送的phone"<<nbody->phone;
//开启读取应答包
connect(tcpclient,SIGNAL(readyRead()),this,SLOT(readamend()));
}
//读取修改密码应答包
void Amend_widget::readamend()
{
//这里打包和解包 是用的用一个对象,这样可以直接调用,省的分别用两个打包解包的对象去打包解包
sendamend->unpack();
res_cpwd_t * body = (res_cpwd_t*)sendamend->getBody();
qDebug()<<body->change_ret;
//判断修改密码标志位
if(body->find_ret == 0)
{
if(QMessageBox::Ok==QMessageBox::question(this,"提示","密码修改成功",QMessageBox::Ok))
{
disconnect(tcpclient,SIGNAL(readyRead()),this,SLOT(readamend())); //关闭当前读取函数
return;
}
}
else
{
if(QMessageBox::Ok==QMessageBox::question(this,"提示","密码修改失败",QMessageBox::Ok))
{
disconnect(tcpclient,SIGNAL(readyRead()),this,SLOT(readamend()));
return;
}
}
}
//打包
bool PacketBase::pack()
{
memcpy(m_Data, &this->Head, sizeof(packet_header_t));
memcpy(m_Data + sizeof(packet_header_t), this->Body, sizeof(Body)); //这个Body长度在封包的时候定
memcpy(m_Data + sizeof(packet_header_t) + sizeof(Body), &this->Tail, sizeof(packet_tali_t));
return true;
}
//解包
bool PacketBase::unpack()
{
Body = new char[m_Size]; //防止越界可以在这里下手
memcpy(&this->Head, m_Data, sizeof(packet_header_t));
memcpy(Body, m_Data + sizeof(packet_header_t), sizeof(Body));
memcpy(&this->Tail, m_Data + sizeof(packet_header_t) + sizeof(Body), sizeof(packet_tali_t));
return true;
}
感想
这两周一直在做模数电实验,明后天又要模电数电考试了,接下来两天的进度应该会慢下来。