基于QT的网络聊天系统设计

基于QT的网络聊天系统设计摘要摘要:根据嵌入式应用特点对嵌入式终端下的网络聊天系统进行设计,实现了实时通信和文档共享,具有数据通讯不需要建立服务器、直接在两台电脑间进行通信和数据传输、支持文件及文件目录传输、安全快捷等特点。关键词关键词:QT;Linux;嵌入式系统;网络聊天系统DOIDOI:10.11907/rjdk.1431092中图分类号:TP319文献标识码:A文章编号文章编号:16727800(2015)0040114020引言QT是诺基亚公司开发的一个跨平台应用程序框架,使用QT编写的软件可以移置到任意操作系统上编译与运行,而不需要修改源代码,软件会自动依据使用平台的不同,而呈现出平台原有的图形界面风格。QT是一个跨平台的C++GUI应用构架,它提供了丰富多彩的窗口部件集,具有易于扩展、面向对象、基于组件编程等特点。并且,目前Linux上最流行的KDE桌面环境就是建立在QT库的基础上。因此,利用Linux进行基于QT的嵌入式聊天系统设计与开发具有一定的应用价值。1系统组成架构系统主要由文字聊天模块和文件传输模块组成。1.1文字聊天模块系统采用C/S架构,客户端也同时作为服务器端。系统发送信息给局域网用户时,如图1所示,由单播模块和广播模块来实现,信息接受则由信息接收和信息查看两个模块完成。1.2文件传输模块系统传送文件使用TCP协议,端口为2425,如图2所示,文件传输前有个“3次握手”过程,通过“3次握手”从而建立起一个TCP连接,实现文件、文件夹传输,最后关闭套接字连接。2系统设计2.1系统用户列表建立通过使用UDP协议,在系统启动时向255.255.255.255广播地址发送广播包,广播包默认端口是2425,广播包内容包含工作组、用户名、IP地址、主机名等信息。已经启动的用户通过端口2425接收到此广播包后,就会在自己的用户列表中添加该用户的工作组、用户名、IP地址、主机名等信息,同时向对方IP地址发送本机用户的个人信息,从而使双方建立起用户列表。当刷新用户列表时发送的广播包和启动时相似,只是返回的标识信息和启动时略有不同,可以使用Wireshark抓包工具,监控端口2425的数据,就能截获聊天和刷新时的信息[1]2.2系统聊天信息传送系统聊天信息传送使用UDP协议,由于UDP协议提供的是无连接服务,所以传输速度快,但是由于没有确认机制,因而提供的是不可靠的服务,需要自己定义返回信息的标志来判断对方是否接收到信息。使用IPMSG_SENDMSG命令发送消息,消息内容添加在附加信息中。在接收消息时,如果对方要求回信确认,则需发送IPMSG_RECVMSG命令并将对方发送的数据包的编号放在附加信息中一同发送至发送消息方。发送广播消息需要使用IPMSG_BOADCASTOPT标志和IPMSG_SENDMSG命令[2]。自动发送包(缺席通知)还需要加上IPMSG_AUTORETOPT标志以得到请求-应答保护,如果没有任何一个包应答,则确认自动发送包没有返回。2.3文件传输文件传输使用带有IPMSG_FILEATTACHOPT位的IPMSG_SENDMSG命令进行传输,文件属性及内容添加在附加信息中。当接收端开始接收文件时,接收端将请求传输文件命令IPMSG_GETFILEDATA发送到发送端的TCP端口,并将发送端发送的包编号:文件序号:偏移量写到附加信息区一同发送,文件发送端接收到该请求信息后进行校验,如果正确即可向接收端发送文件[3]。当接收端接收到目录文件时,将发送附加信息区为发送端发送的包进行编号:文件序号:偏移量(全为十六进制格式),用IPMSG_GETDIRFILES命令请求传输目录文件,而发送端则将头信息长度:文件名:文件大小:文件属性:文件内容添加到附加信息区,头信息长度是从头信息长度开始到文件内容前的‘:’分割符为止的字符个数。当文件属性为IPMSG_FILE_DIR时,系统能够自动识别其为目录,下一个文件的数据在该目录之后,若文件属性为IPMSG_FILE_RETPARENT,系统识别其动作为返回上一级目录,在这种情况下,文件名为‘.’,其属性为当前目录的值[4]。2.4用户离线当用户离线时,可以发送一个离线广播包到255.255.255.255,收到此广播包的用户,根据包中的IP地址(也可能是包含硬件标识,比如网卡地址或者多种判断标志等)删除对方的用户列表信息。3系统测试将两台或者两台以上主机组成一个局域网,运行该系统...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供参考,付费前请自行鉴别。
3、如文档内容存在侵犯商业秘密、侵犯著作权等,请点击“举报”。

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

客服邮箱:

biganzikefu@outlook.com

所有的文档都被视为“模板”,用于写作参考,下载前须认真查看,确认无误后再购买;

文档大部份都是可以预览的,笔杆子文库无法对文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;

文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为依据;

如果您还有什么不清楚的或需要我们协助,可以联系客服邮箱:

biganzikefu@outlook.com

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

文秘专家
机构认证
内容提供者

1

确认删除?