ImageVerifierCode 换一换
格式:DOCX , 页数:15 ,大小:117.20KB ,
资源ID:23001745      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/23001745.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于嵌入式linux的QQ聊天系统设计.docx)为本站会员(b****2)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

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

1、基于嵌入式linux的QQ聊天系统设计武汉理工大学华夏学院专业综合课程设计报告书项 目 名 称基于嵌入式linux的QQ聊天系统设计课程设计总评成绩 学生姓名、学 号 黄标 10212411322 学 生 专 业 班级 自动化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. 实现客户端与服务器端的聊天

4、功能。3. 撰写课程设计说明书。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、聊天程序的基本要求(1)、在QT(或mi

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

7、forPC编译器,运行测试阶段使用QTforARM编译器。使用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变量中增加需要用到的库,然后输入 m

8、ake命令编译。 LIBS=$(SUBLIBS)-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)运行当前

9、目录下的set-env文件,重新设置环境变量,进入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地址(可读可写),另一个用

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

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

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

13、ridLayout(this, 6, 3, 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)

14、; 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 mode QLa

15、bel *label3 = new QLabel( Contract Area:, this); grid-addWidget(label3, 3, 0); multiedit_contract = new QMultiLineEdit(this); multiedit_contract-setReadOnly(1);/set read only grid-addWidget(multiedit_contract,3,1); QLabel *label4 = new QLabel( Send Area:, this); grid-addWidget(label4, 4, 0); multied

16、it_send = new QMultiLineEdit(this); grid-addWidget(multiedit_send,4,1); QPushButton *button_send = new QPushButton(Send, this); /*add the send button*/ grid-addWidget( button_send, 5, 0); connect(button_send,SIGNAL(clicked(),this, SLOT(ButtonSend(); QPushButton *button_clear = new QPushButton(Clear,

17、 this); /*add the clear button*/ grid-addWidget(button_clear,5,1); connect(button_clear,SIGNAL(clicked(),this,SLOT(ButtonClear(); EditDemo:EditDemo() if(socket_flag = 1)/*if create socket success*/ close(sockfd); /*Close the socket*/ printf(Close the socketn); 创建套接字 void EditDemo:CreateSocket(void)

18、/*地址解析函数*/ host = gethostbyname(edit_ip-text() /*创建socket*/ sockfd = socket(AF_INET,SOCK_STREAM,0); /*设置sockaddr_in 结构体中相关参数*/ serv_addr.sin_family = AF_INET; serv_addr.sin_port = htons(atoi(edit_port-text(); serv_addr.sin_addr = *(struct in_addr *)host-h_addr); bzero(&(serv_addr.sin_zero), 8); 创建线程

19、 void *task(void *arg) int recvbytes = 0; char bufBUFFER_SIZE= 0; arg = arg; while(1) if(recvbytes = recv(sockfd, buf, BUFFER_SIZE, 0) 0) multiedit_contract-append(Server said: +(QString)buf); void CreateThread(void) int result = 0; result = pthread_create(&thread1, NULL, task, (void *)0); /*Create

20、Thread*/ (2)、服务器端代码 #define PORT 4321 #define BUFFER_SIZE 1024 #define MAX_QUE_CONN_NM 5 int main() struct sockaddr_in server_sockaddr, client_sockaddr; int sin_size, recvbytes; unsigned int sendbytes = 0; int sockfd, client_fd; char bufBUFFER_SIZE; /*建立socket连接*/ sockfd = socket(AF_INET,SOCK_STREAM

21、,0) /*设置sockaddr_in 结构体中相关参数*/ server_sockaddr.sin_family = AF_INET; server_sockaddr.sin_port = htons(PORT); server_sockaddr.sin_addr.s_addr = INADDR_ANY; bzero(&(server_sockaddr.sin_zero), 8); int i = 1;/* 使得重复使用本地地址与套接字进行绑定 */ setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, &i, sizeof(i); /*绑定函数bind*

22、/ ibind(sockfd, (struct sockaddr *)&server_sockaddr, sizeof(struct sockaddr); /*调用listen函数*/ listen(sockfd, MAX_QUE_CONN_NM); /*调用accept函数 等待客户端的连接*/ client_fd = accept(sockfd, (struct sockaddr *)&client_sockaddr, &sin_size); /*调用recv函数接收客户端的请求*/ while(1) memset(buf , 0, sizeof(buf); recvbytes = rec

23、v(client_fd, buf, BUFFER_SIZE, 0); if(recvbytes 0) printf(Received a message: %sn, buf); printf(Send a message: %sn, buf); (sendbytes = send(client_fd, buf, strlen(buf), 0); close(sockfd); exit(0); 四、结果分析(对获得的数据、波形、现象或问题进行分析) 4.运行结果五、参考文摘(相关文摘不少于5篇,记录每篇文献的作者姓名.文献名称.文献发行城市:文献出版社,出版年;文献内容摘要, 每篇不少于100字

24、)1 嵌入式Linux应用程序开发标准教程.人民邮电出版社。2010.7 2何加铭主编.嵌入式32位微处理器系统设计与应用.电子工业出版社.2006年3许海燕,付炎著.嵌入式系统技术与应用.机械工业出版社.2002年4周立功主编.ARM嵌入式系统基础教程.北京航空航天大学出版社.2005年5田泽主编.嵌入式系统开发与应用教程.北京航空航天大学出版社.2005年6徐英慧;马忠梅;王磊;王琳主编.ARM9嵌入式系统设计-基于sc32410与linux(第二版).北京航空航天大学出版社.2010年课程设计评分表评 分 项 目评分成绩1目的明确、功能合理(10分)2设计方案正确,具有可行性、创新性(20分)3硬件电路正确、软件流程清晰(40分)4参考文摘不少于5篇(10分)5答辩(20分)总 分(100分)答辩记录:指导教师综合评语:指导教师(签名) 日 期: 年 月 日

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1