qt聊天总结及收获
2013-11-25 23:28
465 查看
网络传输协议:UDP
客户端往服务器发送消息端口都为8888
enum{
DENGLUFAS = 3,DENGLUOK,DENGLUNO,DENGLULIST,
YIDENGLU,LEAVE,MYINF,YIZAIXIAN,
ZHUCEFAS,ZHUCEOK,ZHUCENO,
NEWCODEFAS,NEWCODEOK,NEWCODENO,
NEWNICKFAS,NEWNICKOK,NEWNICKNO,
REFRESH
};
登陆发送out<<DENGLUFAS<<Account<<Password;
接收端口7777
接收in>>DENGLUOK>>stat
If stat == 1 登陆成功 进入列表
状态由0更新为1 表示已上线
接收in>>DENGLUNO>>stat
If stat == 0 密码或账号输入错误
If stat == -1 账号已经登陆
下线功能思路
下线会在构造函数里面发送给服务器
out<<LEAVE<<Account<<Password;
服务器从数据库里面查找该账号 然后将该账号的状态更新为0 表示已经下线
注册发送out<<ZHUCEFAS<<nickName<<Account<<Password;
接收端口66666
接收in>>mesRe>>ZHUCEOK 注册成功
接收in>>mesRe>>ZHUCENO 注册失败
修改信息
接收端口 2222
修改密码status==1
out<<NEWCODEFAS<<currentAccount<<newCode;
修改昵称 status == 2
out<<NEWNICKFAS<<currentAccount<<newNick;
接收修改信息
in>>type type==NEWCODEOK in>>currentAccount
密码修改成功
type==NEWCODENO in>>currentAccount
密码修改失败
type==NEWNICKOK in>>newNick
昵称修改成功
type==NEWNICKNO in>>newNick
昵称修改失败
自己的信息更新
接收端口5555
out<<MYINF<<myAccount<<myPassword;
接收>>YIDENGLU >>acc>>nick;
列表开始显示出自己的账号昵称
好友列表导入
out<<REFRESH<<myAccount<<myPassword;
接收>>YIZAIXIAN>>friendCount
for (inti=0; i<friendCount; i++)
{ in>>friendaccount[i]>>friendnickname[i];
}循环接收好友
for (int i=0; i<friendCount; i++)
{
if (friendaccount[i] == "")
break;
else
{ ui->friendListWidget->addItem(newQListWidgetItem(QIco n(":/new/prefix1/pictures/3.bmp"),
friendnickname[i].append("("+friendaccount[i]+")")));
ui->friendListWidget->setIconSize(QSize(50,50));
}
}
将好友列表显示到listwidget上面
客户端功能 发送自己的信息给服务器 服务器收到后从数据库里面遍历 如果有发送回去成功的信号 反之亦然
小Bug :
1.修改昵称 修改成功后要自己手动刷新
2.好友列表也需要手动刷新 其实可以做个定时器 隔一段时间自己会自动刷新 但涉及到多线程的问题了 不会 时间不够了
3.里面的好友都是数据库里面有的 没有判别是否在线
而且没有做添加好友功能 没有创建每个人的好友数据库 公用注册的数据库里面的好友信息
需要完善的!!!!
1.添加好友思路
先创建好自己的好友数据库
将你要添加的好友账号发送给服务器 服务器从注册的数据库里所有好友中查找 如果有 将之添加到自己的好友列表数据库中 发回添加成功信号 如果没有 发送添加失败信号 没有该账号
2.
(1)文档的书写
(2)工程的结合
(3)数据库,网络的系统学习
(4)代码的书写规范
(5)界面的美化
3.聊天框里不能显示图片 不能发送图片
4.文件的发送与接收
收获 : 坚持才能有结果 最开始我们四个人一块写的到最后差不多算俩人在做
那个人也很慢 我就自己开始做 思路,功能大致都有了解了 一个星期就差不多了 感觉学到了不少 明白了不少
相关文章推荐
- Qt 获取Cookie
- QT 编写 简单的计算器(新手上路篇)
- qt中qtableview的使用
- GL/gl.h: No such file or directory # include <GL/gl.h> && cannot find -lGL
- Qt实现截屏
- Qt下使用ActiveX控件
- QTP使用技巧
- 基于QT的webkit开发CB/S结构的应用系统
- QTP特点有哪些?
- 关于Qt只运行一个实例的问题
- QTP知识总结(一)
- QTP工具
- QT QMap介绍与使用
- Windows平台下Qt QOpenGL中glutSolidSphere()方法未定义的解决方法
- Qt里获取目录的一个另类方法
- ubuntu上 QT 连接各种数据库报错解决(QSqlDatabase: * driver not loaded )
- vs2010和qt4.8.4配置
- Qt中QString的类型转换
- Qt中的QLineEdit、QTextEdit和QPla…
- Qt解决中文乱码问题