基于嵌入式linux的QQ聊天系统设计

上传人:pu****.1 文档编号:443234767 上传时间:2022-09-12 格式:DOC 页数:18 大小:162KB
返回 下载 相关 举报
基于嵌入式linux的QQ聊天系统设计_第1页
第1页 / 共18页
基于嵌入式linux的QQ聊天系统设计_第2页
第2页 / 共18页
基于嵌入式linux的QQ聊天系统设计_第3页
第3页 / 共18页
基于嵌入式linux的QQ聊天系统设计_第4页
第4页 / 共18页
基于嵌入式linux的QQ聊天系统设计_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《基于嵌入式linux的QQ聊天系统设计》由会员分享,可在线阅读,更多相关《基于嵌入式linux的QQ聊天系统设计(18页珍藏版)》请在金锄头文库上搜索。

1、各专业全套优秀毕业设计图纸武汉理工大学华夏学院专业综合课程设计报告书项 目 名 称基于嵌入式linux的QQ聊天系统设计课程设计总评成绩 学生姓名、学 号 学 生 专 业 班级 自动化1113 指 导 教 师 姓名 课程设计起止日期 2014.12.52014.12.31 课程设计基本要求专业综合课程设计是十分重要的实践教学环节,通过专业综合课程设计,培养学生综合运用所学理论知识和专业技能,以项目为导向解决工程领域的实际问题。课程设计报告是科学论文写作的基础,报告可以以小论文的形式提交。 1. 专业综合课程设计内容包括项目设计方案论证、项目设计与结果分析、答辩等环节,每个环节都应有一定的考核要

2、求和考核成绩。2. 项目设计方案论证主要包括可行性设计方案论证、从可行性方案中确定最佳方案,项目设计要求按选择的方案进行硬件设计或软件编程。4. 项目设计结果分析主要包括项目设计与制作结果的工艺水平,项目测试性能指标的正确性和完整性,软件运行情况和效果分析,故障或错误原因的分析和处理方法。 5. 学生在课程设计过程中应认真阅读与本课程设计项目相关的文献,培养自己的阅读兴趣和习惯,借以启发自己的思维,提高综合分和理解能力。文献阅读摘要记录于课程设计报告书中。6. 答辩是课程设计中十分重要的环节,由课程设计指导教师向答辩学生提出23个问题,通过答辩可进一步了解学生对课程设计中理论知识和实际技能掌握

3、的程度,以及对问题的理解、分析和判断能力。7.学生应在课程设计周内认真参加项目设计的各个环节,按时完成课程设计报告书。课程设计报告书是实践教学水平评估的重要资料,应按课程、班级集成存档交实验室统一管理。课程设计任务书学生姓名: 黄标 专业班级: 自动化113 指导教师: 苏明霞 工作单位:武汉理工大学华夏学院 题 目: 基于嵌入式linux的QQ聊天系统设计 基础条件:1. 软帝嵌入式ARM9开发教学设备;2. PC机及相关应用软件;要求完成的主要任务:1. 了解TCP方面socket编程,linux下QT编程。2. 实现客户端与服务器端的聊天功能。3. 撰写课程设计说明书。4. 课程设计说明

4、书要求:引言、设计要求、系统结构、原理设计、各个模块的设计与实现、软件设计、调试过程、体会及总结、参考文献、源程序。说明书使用A4纸打印或手写。时间安排:第14周 下达课程设计任务书和日程安排,根据任务书查找资料,了解触摸屏工作原理;第15周 熟悉linux的QT下C+程序设计;熟悉linux移植过程。第16周 程序的编写和调试; 第17周 结果分析整理、撰写课程设计报告,验收和答辩。指导教师签名: 2014 年 12 月 5 日系主任(或责任教师)签名: 2014 年 12月 5 日摘 要(摘要200字左右,采用5号字,楷体;摘要要求写“目的、方法、结果、结论”) 本系统建立在嵌入式系统网络

5、平台上,系统的设计上瘾了面向对象技术和面向对象的设计原则。系统采用C/S与B/S结合的结构,客户端与客户端一级客户端与服务端之间通过Socket传递消息。使用嵌入式C+语言编写,开发工具采用linux下的QT环境。 服务器设计与实现过程中,采用了多线程技术,可以在单个程序当中同时运行多个不同的线程,执行不同的任务。大大 增强了程序对服务器资源的利用。在linux下编写并调试服务器端程序与客户端程序,实现了客户、服务器之间的连接和通信。关键字:linux;qt;tcp/ip;聊天一、 设计的总体目的与功能1、聊天程序的基本要求(1)、在QT(或miniGUI)编写聊天程序,交叉编译后下载到目标机

6、,可实现两台目标机可发送文本聊天。(2)、QT(或miniGUI)界面设计至少包括“发送”,“重置”两个按钮,要求必须把目标机的硬件键盘映射到QT设计的软件界面中,实现软件按钮的功能。2、需实现的主要功能(1) 客户端输入服务器IP和端口号。(2)服务器必须成功启动。(3)每一个客户端可以寻找服务器,并且与服务器建立连接。(4)客户端和服务器可以实现通信。(5)通信的内容可以显示在面板上。(6)利用QT设计界面,并下载到ARM2410上面二、方案论证(可行性方案、系统实现方案)1、QT设计QT设计编写和调试阶段使用周立功ARM2410箱子提供的QTforPC编译器,运行测试阶段使用QTforA

7、RM编译器。使用QTforPC阶段编译程序的步骤如下(以编译hello.cpp程序为例):(1) 进入/x86-qtopia目录,运行set-env脚本,设置环境变量。$.set-env(2) 进入hello目录,然后用progen工具生成工程文件hello.pro。 $cdhello $vihello.cpp$progentapp.tohello.pro(3) 使用tmake工具,生成hello工程的Makefile文件。 $ tmake-oMakefilehello.pro(4) 修改Makefile文件,在LIBS变量中增加需要用到的库,然后输入 make命令编译。 LIBS=$(SUB

8、LIBS)-L$(QTDIR)/lib-lqte-lm-lstdc+$make(5) 启动虚拟控制台,运行hello程序(主机须启动帧缓冲,必须能够 访问/dev/fb0)。 $cd/zylinux/x86-qtopia $.set-env $cdhello $./helloqws 如果要将Hello程序发布到ARM2410上运行,还需进行以下工作:(6)进入/zylinux/arm-qtopia目录,并将hello工程复制到当前目录下。 $cd/zylinux/arm-qtopia $cpav/zylinux/x86-qtopia/hello(7)运行当前目录下的set-env文件,重新设置

9、环境变量,进入hello目录,使用tmake工具,重新生成Makefile文件。 $.set-env $cdhello $tmake-oMakefilehello.pro(8)按照步骤(4)的方法修改包含库,编译,得到可执行文件hello,将hello文件添加到文件系统中,更新文件系统。(9)插入USB鼠标和USB键盘,启动ARM2410。启动Qtopia的终端,运行hello程序。利用同样的编译方法,客户端QT程序进行编译和调试。2、客户端QT界面设计客户端QT需要以下基本组件:(1)两个QEditLine,一个用于输入服务器IP地址(可读可写),另一个用于输入服务器端口号(可读可写)。(2

10、)三个按钮,一个用于连接服务器,另一个用于发送消息,最后一个用于清空发送区域数据。(3)四个标签,用于显示不用组件的内容。(4)两个MultiLineedit,一个用于显示通信内容(只读),一个作为发送区域(可读可写)。3、服务器端和客户端的数据传输方式服务器端和客户端的数据是用TCP套接字来传输的。IP地址表示Internet上的计算机,端口号标识正在计算机运行的进程。端口号与IP地址的组合得出一个网络套接字。客户端使用linuxC函数socket建立到服务器的套接字连接。当套接字连接socket建立后,可以利用linuxC语言中的send函数和recv函数来实现简单的发送和接收消息。4、服

11、务器端功能设计由于时间有限,服务器并没有用QT来编写界面,只是实现一个简单的控制程序。服务器主要实现有:(1)创建套接字(2)对套接字、IP地址和端口号进行绑定(3)进行监听(4)等待客户端的连接(5)对客户端接收和发送数据5客户端功能设计客户端使用QT设计界面,客户端实现的功能如下:(1) 创建套接字 (2)连接服务器 (3)与服务器通信6详细设计(1)、功能分析和描述:聊天工具包括两大功能模块:客户端和服务器端。具体实现的功能创建套接字、连接通信、接收数据显示和发送数据。(2)、客户端功能模块 连接服务器 连接服务器之前需要解析服务器地址、创建套接字、设置sockaddr_in 结构体中相

12、关参数。 发送消息功能 连接功能是开始聊天前必须进行的步骤连接成功之后就可以进行发送消息了。发送消息功能流程图如图2-5所示。接收消息模块 连接成功后就可以接收服务器发送过来的数据。 (3)、服务器功能模块服务器的设计并没有使用QT编写界面,服务器端实现的功能有服务器模块流程图三、硬件电路设计或软件设计1、代码实现 (1)、客户端代码 QT构造和析构函数 EditDemo:EditDemo(QWidget *parent, const char *name):QWidget(parent, name) QGridLayout *grid = new QGridLayout(this, 6, 3

13、, 0, 0); /IP addr QLabel *label1 = new QLabel( IP Addr:, this); grid-addWidget( label1, 0, 0 ); edit_ip = new QLineEdit(this); edit_ip-setText(127.0.0.1); grid-addWidget( edit_ip, 0, 1 ); /Server Port QLabel *label2 = new QLabel( Server Port:, this); grid-addWidget( label2, 1, 0); edit_port = new QLineEdit(this); edit_port-setText(4321); grid-addWidget( edit_port, 1, 1); QPushButton *btn = new QPushButton(Connect, this); /*add the connect button*/ grid-addWidget(btn,2,1); /*add the button*/ connect(btn, SIGNAL(clicked(), this, SLOT(ButtonConnect(); /multiline input

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号