欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    基于嵌入式系统聊天程序设计Word文档格式.docx

    • 资源ID:5597135       资源大小:152.50KB        全文页数:16页
    • 资源格式: DOCX        下载积分:1金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要1金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    基于嵌入式系统聊天程序设计Word文档格式.docx

    1、3.1 QT设计 33.1.1 客户端QT界面设计 43.2服务器端和客户端的数据传输方式 43.3 服务器端功能设计 53.4客户端功能设计 5四、总体设计 54.1 总体功能 5五、 详细设计 65.1 功能分析和描述 65.2 客户端功能模块 65.2.1 连接服务器 65.2.2发送消息功能 65.2.3接收消息模块 75.3 服务器功能模块 8六、代码实现 86.1 客户端代码 86.1.1 QT构造和析构函数 86.1.2 创建套接字 106.1.3 创建线程 116.2 服务器端代码 11七、功能的实现过程 13八、总结 13一、引言随着IT(信息)技术的飞速发展,特别是互联网的

    2、迅速普及,3C(计算机、通讯、消费电子)合一的加速,数字化时代已经来临。嵌入式系统是数字化时代的一大主流产品,世界各国在此领域开始了激烈竞争,以争取获得主导地位。嵌入式系统是数字化产品的核心。为适应嵌入式分布处理结构和应用上网需求,面向21世纪的嵌入式系统要求配备标准的一种或多种网络通信接口。针对外部联网要求,嵌入设备必需配有通信接口,相应需要TCPIP协议族软件支持;由于家用电器相互关联(如防盗报警、灯光能源控制、影视设备和信息终端交换信息)及实验现场仪器的协调工作等要求,新一代嵌入式设备还需具备IEEEl394、USB、Bluetooth或Ir DA通信接口,同时也需要提供相应的通信组网协

    3、议软件和物理层驱动软件。为了支持应用软件的特定编程模式,如Web或无线Web编程模式,还需要相应的浏览器,如HTML、WML等。可以想象,如果一个体积很小的嵌入式系统能够进行在线聊天,HrrP通信,这将是会一件充满意义的事情。但是现在大多数的嵌入式系统都是商业化产品,价格昂贵。所以嵌入式系统开发前期投入比较大,开发工具投入高。为了改变这种状况,有必要设计一个模拟器,使得在PC上可以模拟一个嵌入式设备。在PC机上可以方便的开发和测试程序,并且可以帮助工程师快速的进行分析和改进,提高了工作效率和降低了项目的开发成本。随着自由软件理念日益为大众广为接受,一批自由软件在IT的各个领域取得了巨大成功,L

    4、inux是其中最具代表性的一个。其自由、开放的特性吸引了大批软件厂商和独立开发人员。多年的发展和业界同仁的共同努力已使其成为高效、稳定、低成本的操作系统。而且由于Linux开放源代码,任何人都可以对其进行裁减、修改,以适应自行开发的需要。2、系统分析2.1开发背景IRC(Intemet Relay Chat,网络中继聊天)协议用于文本交谈被设计出来已经有许多年了。IRc协议是基于客户服务器模型的,可以很好地分布式地在许多机器上运行。一个典型的设置涉及一个进程(服务器),它作为中心点接受客户(或其它服务器)的连接,并且实现要求的消息传送多元技术和其它的功能。这种分布模型,由于它要求每个服务器都拥

    5、有全局状态信息,限制了一个网络所能达到的最大规模。因此是此协议最令人不能容忍的问题。现存的网络能够以难以置信的速度持续增长,我们必须感谢硬件制造商们给了我们比以往更加强大的系统。IRC协议本身就是个电话会议系统(虽然使用的是CS模式),所以非常适合分布式的多个机器上使用。一个典型的建立包括一个单一的处理器(服务器)形成一个中心节点,客户机(或其他服务器)连接这个节点去获取消息或发送,群发等功能。IRC协议已经在使用TCPIP网络协议的系统中应用了。虽然TCPIP协议并不是必须的,但是现在IRC操作仅使用在这个方面。2.2聊天程序的基本需求1、在QT(或miniGUI)编写聊天程序,交叉编译后下

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

    7、阶段使用QT for ARM编译器。使用QT for PC阶段编译程序的步骤如下(以编译hello.cpp程序为例):(1)进入/x86-qtopia目录,运行set-env脚本,设置环境变量。$ . set-env(2)进入hello目录,然后用progen工具生成工程文件hello.pro。$ cd hello$ vi hello.cpp$ progen t app.t o hello.pro(3)使用tmake工具,生成hello工程的Makefile文件。$ tmake -o Makefile hello.pro(4)修改Makefile文件,在LIBS变量中增加需要用到的库,然后输入

    8、make命令编译。LIBS = $(SUBLIBS) -L$(QTDIR)/lib -lqte -lm -lstdc+$ make(5)启动虚拟控制台,运行hello程序(主机须启动帧缓冲,必须能够访问/dev/fb0)。$ cd /zylinux/x86-qtopia$ ./hello qws如果要将Hello程序发布到MagicARM2410上运行,还需进行以下工作:(6)进入/zylinux/arm-qtopia目录,并将hello工程复制到当前目录下。$ cd /zylinux/arm-qtopia$ cp av /zylinux/x86-qtopia/hello (7)运行当前目录下

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

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

    11、服务器并没有用QT来编写界面,只是实现一个简单的控制程序。服务器主要实现有:(1)创建套接字(2)对套接字、IP地址和端口号进行绑定(3)进行监听(4)等待客户端的连接(5)对客户端接收和发送数据3.4客户端功能设计客户端使用QT设计界面,客户端实现的功能如下: (1)创建套接字 (2)连接服务器 (3)与服务器通信四、总体设计4.1 总体功能根据对需求所做的分析,聊天程序需要实现的基本功能应包括以下几个方面:(5) 通信的内容可以方便查看。 使用QT设计的界面简洁,大方,操作简单,方便,容易上手,用户可以快速掌握操作流程。五、 详细设计5.1 功能分析和描述 聊天工具包括两大功能模块:客户端

    12、和服务器端。具体实现的功能创建套接字、连接通信、接收数据显示和发送数据。5.2 客户端功能模块5.2.1 连接服务器连接服务器之前需要解析服务器地址、创建套接字、设置sockaddr_in 结构体中相关参数。5.2.2发送消息功能连接功能是开始聊天前必须进行的步骤,连接成功之后,就可以进行发送消息了。发送消息功能流程图如图2-5所示: 图2-5 发送消息功能流程图5.2.3接收消息模块连接成功后,就可以接收服务器发送过来的数据。5.3 服务器功能模块 服务器的设计并没有使用QT编写界面,服务器端实现的功能有: 图2-8 服务器模块流程图六、代码实现6.1 客户端代码6.1.1 QT构造和析构函

    13、数EditDemo:EditDemo( QWidget *parent, const char *name):QWidget(parent, name) QGridLayout *grid = new QGridLayout(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);addWidget( edit_ip, 0,

    14、1 ); /Server Port QLabel *label2 = new QLabel( Server Port:addWidget( label2, 1, 0); edit_port = new QLineEdit(this); edit_port-4321addWidget( edit_port, 1, 1); QPushButton *btn = new QPushButton(Connect /*add the connect button*/addWidget( btn, 2, 1); /*add the button*/ connect(btn, SIGNAL(clicked(

    15、), this, SLOT(ButtonConnect(); /multiline input mode QLabel *label3 = new QLabel( Contract Area:addWidget(label3, 3, 0); multiedit_contract = new QMultiLineEdit(this); multiedit_contract-setReadOnly(1);/set read onlyaddWidget(multiedit_contract,3,1); QLabel *label4 = new QLabel( Send Area:addWidget(

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

    17、ear /*add the clear button*/addWidget( button_clear, 5, 1); connect(button_clear, SIGNAL(clicked(), this, SLOT(ButtonClear();EditDemo()if(socket_flag = 1)/*if create socket success*/ close(sockfd); /*Close the socket*/ printf(Close the socketn6.1.2 创建套接字void EditDemo:CreateSocket(void) /*地址解析函数*/ ho

    18、st = 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);6.1.3 创建线程void *t

    19、ask(void *arg) int recvbytes = 0; char bufBUFFER_SIZE= 0; arg = arg;while(1) if(recvbytes = recv(sockfd, buf, BUFFER_SIZE, 0) 0) append(Server said: +(QString)buf); void CreateThread(void) int result = 0; result = pthread_create(&thread1, NULL, task, (void *)0); /*Create Thread*/6.2 服务器端代码#define PO

    20、RT 4321#define BUFFER_SIZE 1024#define MAX_QUE_CONN_NM 5int 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,0); server_sockaddr.sin_family =

    21、 AF_INET; server_sockaddr.sin_port = htons(PORT); server_sockaddr.sin_addr.s_addr = INADDR_ANY;(server_sockaddr.sin_zero), 8); int i = 1;/* 使得重复使用本地地址与套接字进行绑定 */ setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, &i, sizeof(i); /*绑定函数bind*/ ibind(sockfd, (struct sockaddr *)&server_sockaddr, sizeof(struct

    22、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 = recv(client_fd, buf, BUFFER_SIZE, 0); if(recvbytes Received a message:

    23、 %sn, buf);Send a message: (sendbytes = send(client_fd, buf, strlen(buf), 0); exit(0);七、功能的实现过程 依照上节所设计的结构和过程,可以很方便的实现出聊天功能。下面就是一个聊天过程的执行情况。聊天的现实过程为: A:Hello B: A(B):Bye其中A,B是虚拟的聊天者。 在实现过程中,这个聊天过程就要借助一个服务器来实现,聊天的发送端要先跟这个服务器通信,然后由这个服务器与接收方进行通信,最后完成聊天过程。八、总结通过这次嵌入式linux程序设计和编程,对linux的编程有了更深的了解。特别是对QT编程有了很大的进步,通过测试,编写的程序都能顺利运行。由于时间紧迫,对服务器部分没有用QT来设计界面,只是编写客户端的QT程序,并成功仿真运行。


    注意事项

    本文(基于嵌入式系统聊天程序设计Word文档格式.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开