局域网聊天软件设计与实现本科毕业设计论文.docx

上传人:b****6 文档编号:7725272 上传时间:2023-01-26 格式:DOCX 页数:62 大小:175.51KB
下载 相关 举报
局域网聊天软件设计与实现本科毕业设计论文.docx_第1页
第1页 / 共62页
局域网聊天软件设计与实现本科毕业设计论文.docx_第2页
第2页 / 共62页
局域网聊天软件设计与实现本科毕业设计论文.docx_第3页
第3页 / 共62页
局域网聊天软件设计与实现本科毕业设计论文.docx_第4页
第4页 / 共62页
局域网聊天软件设计与实现本科毕业设计论文.docx_第5页
第5页 / 共62页
点击查看更多>>
下载资源
资源描述

局域网聊天软件设计与实现本科毕业设计论文.docx

《局域网聊天软件设计与实现本科毕业设计论文.docx》由会员分享,可在线阅读,更多相关《局域网聊天软件设计与实现本科毕业设计论文.docx(62页珍藏版)》请在冰豆网上搜索。

局域网聊天软件设计与实现本科毕业设计论文.docx

局域网聊天软件设计与实现本科毕业设计论文

 

局域网聊天软件设计与实现

毕业设计(论文)原创性声明和使用授权说明

原创性声明

本人郑重承诺:

所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。

尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得及其它教育机构的学位或学历而使用过的材料。

对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。

作者签名:

     日 期:

     

指导教师签名:

     日  期:

     

使用授权说明

本人完全了解大学关于收集、保存、使用毕业设计(论文)的规定,即:

按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。

作者签名:

     日 期:

     

学位论文原创性声明

本人郑重声明:

所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。

除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。

对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。

本人完全意识到本声明的法律后果由本人承担。

作者签名:

日期:

年月日

学位论文版权使用授权书

本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。

本人授权    大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。

涉密论文按学校规定处理。

作者签名:

日期:

年月日

导师签名:

日期:

年月日

注意事项

1.设计(论文)的内容包括:

1)封面(按教务处制定的标准封面格式制作)

2)原创性声明

3)中文摘要(300字左右)、关键词

4)外文摘要、关键词

5)目次页(附件不统一编入)

6)论文主体部分:

引言(或绪论)、正文、结论

7)参考文献

8)致谢

9)附录(对论文支持必要时)

2.论文字数要求:

理工类设计(论文)正文字数不少于1万字(不包括图纸、程序清单等),文科类论文正文字数不少于1.2万字。

3.附件包括:

任务书、开题报告、外文译文、译文原文(复印件)。

4.文字、图表要求:

1)文字通顺,语言流畅,书写字迹工整,打印字体及大小符合要求,无错别字,不准请他人代写

2)工程设计类题目的图纸,要求部分用尺规绘制,部分用计算机绘制,所有图纸应符合国家技术标准规范。

图表整洁,布局合理,文字注释必须使用工程字书写,不准用徒手画

3)毕业论文须用A4单面打印,论文50页以上的双面打印

4)图表应绘制于无格子的页面上

5)软件工程类课题应有程序清单,并提供电子文档

5.装订顺序

1)设计(论文)

2)附件:

按照任务书、开题报告、外文译文、译文原文(复印件)次序装订

指导教师评阅书

指导教师评价:

一、撰写(设计)过程

1、学生在论文(设计)过程中的治学态度、工作精神

□优□良□中□及格□不及格

2、学生掌握专业知识、技能的扎实程度

□优□良□中□及格□不及格

3、学生综合运用所学知识和专业技能分析和解决问题的能力

□优□良□中□及格□不及格

4、研究方法的科学性;技术线路的可行性;设计方案的合理性

□优□良□中□及格□不及格

5、完成毕业论文(设计)期间的出勤情况

□优□良□中□及格□不及格

二、论文(设计)质量

1、论文(设计)的整体结构是否符合撰写规范?

□优□良□中□及格□不及格

2、是否完成指定的论文(设计)任务(包括装订及附件)?

□优□良□中□及格□不及格

三、论文(设计)水平

1、论文(设计)的理论意义或对解决实际问题的指导意义

□优□良□中□及格□不及格

2、论文的观念是否有新意?

设计是否有创意?

□优□良□中□及格□不及格

3、论文(设计说明书)所体现的整体水平

□优□良□中□及格□不及格

建议成绩:

□优□良□中□及格□不及格

(在所选等级前的□内画“√”)

指导教师:

(签名)单位:

(盖章)

年月日

评阅教师评阅书

评阅教师评价:

一、论文(设计)质量

1、论文(设计)的整体结构是否符合撰写规范?

□优□良□中□及格□不及格

2、是否完成指定的论文(设计)任务(包括装订及附件)?

□优□良□中□及格□不及格

二、论文(设计)水平

1、论文(设计)的理论意义或对解决实际问题的指导意义

□优□良□中□及格□不及格

2、论文的观念是否有新意?

设计是否有创意?

□优□良□中□及格□不及格

3、论文(设计说明书)所体现的整体水平

□优□良□中□及格□不及格

建议成绩:

□优□良□中□及格□不及格

(在所选等级前的□内画“√”)

评阅教师:

(签名)单位:

(盖章)

年月日

教研室(或答辩小组)及教学系意见

教研室(或答辩小组)评价:

一、答辩过程

1、毕业论文(设计)的基本要点和见解的叙述情况

□优□良□中□及格□不及格

2、对答辩问题的反应、理解、表达情况

□优□良□中□及格□不及格

3、学生答辩过程中的精神状态

□优□良□中□及格□不及格

二、论文(设计)质量

1、论文(设计)的整体结构是否符合撰写规范?

□优□良□中□及格□不及格

2、是否完成指定的论文(设计)任务(包括装订及附件)?

□优□良□中□及格□不及格

三、论文(设计)水平

1、论文(设计)的理论意义或对解决实际问题的指导意义

□优□良□中□及格□不及格

2、论文的观念是否有新意?

设计是否有创意?

□优□良□中□及格□不及格

3、论文(设计说明书)所体现的整体水平

□优□良□中□及格□不及格

评定成绩:

□优□良□中□及格□不及格

教研室主任(或答辩小组组长):

(签名)

年月日

教学系意见:

系主任:

(签名)

年月日

摘要

局域网聊天软件是在Linux系统下运行的一个应用程序,程序用c++语言编写。

本程序有如下功能:

用户列表自动刷新、通过TCP通信协议进行消息收发、MYsql数据库保存用户名与密码。

该设计是一个简单的局域网聊天软件,适用于企业内部和实验室使用,不与互联网进行数据交换,具有高速、安全等优势。

本文着重介绍下列内容:

对用户上下线消息通知、聊天消息收发等进行数据解析;TCP网络编程,讲述用TCP创建Client和Server以及收发数据的实现;最后对本设计的具体实现方法和设计实现流程进行讲解以及程序运行分析。

关键词:

Linux;TCP;Socket;Mysql数据库;C++

TheDesignAndImplementationofTheLANChatSoftware

Abstract

TheLANchattoolisAnapplicationunderLinux.TheapplicationwrittenbyC++language.Thisprogramhasthefollowingfunctions:

sendingbroadcastwhenloginandexit,sendingandreceivingmessagesbytheTCPcommunicationprotocol,usingMYsqldatabasetosavechatmessages.itismostoftenusedtochatinenterpriseandlaboratory,itisworkingwithoutdataexchangefromInternet,soitcantransmitdatahighspeedandsecurity.

Thispaperfocusesonthefollowingcontents:

theuseronlineandofflinemessagenotification,chatmessagesendandreceivedataanalysis;TCPnetworkprogramming,heretellsthemethodofusingTCPtocreateclientandServertosendandreceivedata;Finallyintroducethedesignmethodandimplementationprocessofmygraduationdesignandrunningtheapplication.

Keywords:

Linux;TCP/IP;Socket;Mysqldatabase;C++ 

1绪论

1.1课题背景

随着信息化的广泛普及,网络这种新兴事物在今年来得到前所未有的普及和发展,基于网络的各种应用层出不穷,让各个年龄及阶层的用户体会到了不同的个性化服务,人们的生活方式已经与网络紧密的结合在一起。

中小型企业的领导也认识到提高企业信息化的必要性,为了让企业在发展迅速的信息时代生存下去,增强企业的竞争力,就要求有一个良好的平台来让企业员工之间的交流和通信,特别是领导和员工之间的沟通与交流,因此即时聊天交流系统就应运而生。

伴随着企业规模的不断扩大,企业的各种信息也越来越私密,企业只希望员工通过内部网络进行交流与沟通,最大限度避免机密信息通过Internet泄漏到外部。

为了解决上述问题,从而提出了局域网聊天软件的构想,通过该软件,企业的员工可以随时进行消息传递,即提高了效率,又保护了信息的私密与安全性。

软件开发是一个十分复杂的过程,这里对软件开发的基本过程和方法进行介绍,并列举相关的实例加以说明。

1.2目的和意义

本论文主要说明基于Linux平台的局域网聊天软件的设计与实现。

详细阐述开发中所用到的相关技术,并具体分析各个模块的功能和实现方法。

本软件能够满足小型企业或小型局域网内部即时通信的需要,提高工作效率。

1.3研究现状

1996年11月,出现了ICQ,于是第一款互联网IM(InstantMessenger,即时通讯)应运而生,随后短短数年里成为了一个巨大的IM产业。

到现在,IM应用工具成为了最热门的网络应用之一。

国内各种外聊天工具花样繁多。

而作为全球第一款即时通讯工具的ICQ,经过不断的发展,如今在业内的地位已经无人能够撼动。

ICQ名字是英文“Iseekyou”的缩写,即“我找你”。

ICQ最初只有两个特性,一个是用户列表,另一个是即时聊天。

但是一出世就收到网民的喜爱,半年里注册用户就达到了85万,1998年这个数字更是翻了14多倍,注册用户达到了1200多万人。

ICQ的迅速发展也让在桌面软件领域独步天下的微软与互联网领头羊的Yahoo嗅到了商机,分别推出了MSN与YahooMessenger,形成了即时通讯市场的雏形。

ICQ风行全球的时候,国内也推出了各种仿ICQ的中文IM工具,现在国内的市场主要有微软的MSN、腾讯的QQ、雅虎的雅虎通等等。

腾讯的QQ占据国内市场的70%以上。

随着IM应用的发展,其功能也不断的丰富,除了用户列表与即时聊天,表情图片也成为了它的一个重要特性,此外文件传输、视频聊天、游戏等功能也被集成到了IM应用中。

如今,IM不是一个简单的聊天工具,而是一个集信息资讯、休闲娱乐、交流互动的平台,它上面的语音、音乐点播、视频、信息共享等新的应用层出不穷。

随着IM应用的不断成熟,已经形成了IM产业链。

IM应用也成为了现代人们与现代经济中不可缺少的一部分。

互联网技术的发展使信息在传递方面也有了崭新的一面。

聊天软件成为了信息传递最重要的方式,它可以让人们随时随地进行信息交流,让人们更好的了解彼此。

聊天软件人性化的设计可以让每个用户都能得心应手的使用,获得了更多人的青睐。

Internet的出现让整个世界连通起来,而聊天软件的出现把每一位网上的用户联通起来。

网络应用的不断发展,让聊天软件成为最热门的应用之一。

经过进来的发展,聊天软件已不再是简单的通讯工具,而是成为集互动交流、休闲娱乐为一体的多元化的互联网应用平台,它的出现给人们彼此间的沟通带来了无比的方便,通过聊天软件人们可以建立深刻的友情,让聊天软件更加充满了活力与生机。

2系统分析

2.1系统理论基础

2.1.1C/S架构

C/S结构的基本原则是将计算机的应用任务分解成多个子任务,由多台计算机分工合作完成。

Client端完成数据的处理,数据的表示及用户接口功能;Server端完成DBMS的核心功能。

这种架构的优点是具有强大的事务处理与数据操作能力,开发的模型比较简单,易于人们接受和理解。

系统的应用程序和服务器构建在不同的计算机上运行。

在C/S架构中,各个构建能够充分隔离,应用程序的开发集中于数据的浏览与查询,数据库服务器开发集中于数据的管理功能,有利于系统的安全性。

服务器与客户端直接相连,实时性良好。

可以充分发挥客户端的处理能力,可以在客户端把一部分工作处理后在提交给服务器。

客户端的响应速度快并且应用服务器运行数据的负荷也比较轻。

缺点一是应用服务器的运行数据负荷较轻。

最简单的C/S架构的数据应用有两个部分,即客户应用程序与数据库服务器程序,可以分别称作前台程序和后台程序。

后台程序运行数据库服务器程序,服务器一旦启动,就随时等待响应前台程序发来的请求;前台程序运行在用户的电脑上,当前台程序要对数据库中的数据进行任何操作时,就自动寻找后台程序,发送请求,后台程序根据预定的规则做出应答。

二是数据的存储管理功能比较透明,在数据库中,数据的存储管理,是由服务器与客户端分别进行的,客户端不能违反的规则是在服务器中体现的。

对于客户端是透明的,客户端无法干涉背后的过程。

在这种架构下,数据库不能成为真正公共的、专业化的仓库,要受到专门的管理。

2.1.2TCP

TCP协议即TCP传输控制协议,是一种面向连接的、可靠的传输层协议,是专门为广域网设计的。

它的标准是在一系列称为RFC的文档中。

TCP是面向连接的,所以通信双方在通信之前必须先建立TCP连接,通信结束之后必须断开TCP连接。

TCP的可靠性通过下列方式来体现:

(1)把应用数据分割成最适合TCP发送的数据块。

保持应用程序产生的数据长度不变。

报文段或段(segment)是由TCP传递给IP的信息单位。

(2)TCP发出一个段后,都启动一个定时器,等待接受目的端确认收到这个段。

如果不能及时收到目的端的确认,TCP将重发这个段。

如果TCP收到发送端的数据,将发送一个确认。

(3)TCP保持它首部和数据的检验和。

它是一个端到端的检验和,是为了检测数据在传输过程中是否变化。

如果接受到的段的检验和有差错,则TCP将丢弃这个报文段并不发送确认(希望发端超时并重发)。

(4)TCP报文段是作为IP数据报来传输的,而IP数据报可能会失序,因此TCP报文段也可能会失序。

所以,TCP将对收到的数据进行重新排序,然后将正确的顺序交给应用层。

(5)IP数据报会发生重复,所以必须丢弃TCP接收端重复的数据。

(6)TCP提供流量控制功能。

TCP连接的双方都有固定大小的缓冲空间。

TCP接收端只允许TCP发送端发送TCP接收端缓冲区所能接纳的数据。

TCP使用三次握手协议建立连接,下图就是三次握手建立连接的过程。

图2-1TCP三次握手示意图

首先客户端发送SYN(SEQ=x)报文给服务器端,并进入SYN_SEND状态。

其次服务器端收到SYN报文后回应一个SYN(SEQ=y)ACK(ACK=x+1)的报文,并进入SYN_RECV状态。

最后客户端收到服务器端的SYN报文并回应一个ACK(ACK=y+1)报文,然后进入Established状态。

TCP经过四次握手终止连接,下图就是四次握手终止连接的过程:

图2-2TCP链接释放示意图

首先应用进程调用close函数,称该端执行“主动关闭”(activeclose)操作。

于是该端的TCP发送一个FIN分节以表示数据发送完毕。

接着接收到这个FIN的对端执行“被动关闭”(passiveclose)操作。

一段时间后接收到这个文件结束符的应用进程将调用close函数关闭它的套接字,该段的TCP也发送一个FIN。

最后接收这个最终FIN的原发送端TCP确认这个FIN。

2.1.3Socket

Socket接口是TCP/IP网络的API,Socket接口定义了许多函数或例程[2],程序员可以用它们来开发TCP/IP网络上的应用程序。

要学的TCP/IP网络编程,必须理解Socket接口,Socket(套接字)是BSD提供的网络应用编程接口,现在它已经是网络编程中的标准。

据传输等操作都是通过该Socket实现的。

常用的Socket类型有两种:

流式Socket(SOCK_STREAM)和数据报式Socket(SOCK_DGRAM)。

流式是一种面向连接的Socket,针对于面向连接的TCP服务应用;数据报式Socket是一种无连接的Socket,对应于无连接的UDP服务应用。

Linux系统中的网络编程通过Socket接口实现。

Socket既是一种特殊的IO,它也是一种文件描述符。

一个完整的Socket都有一个相关描述{协议,本地地址,本地端口,远程地址,远程端口};每一个Socket有一个本地的唯一Socket号,由操作系统分配。

为了建立Socket,程式能够调用Socket函数,该函数返回一个类似于文档描述符的句柄。

socket函数原型为:

intsocket(intfamily,inttype,intprotocol);#include

参数说明:

family:

协议族

AF_INET,AF_INET6,AF_LOCAL,AF_ROUTE,AF_KEY

type:

套接字类型

SOCK_STREAM,SOCK_DGRAM,SOCK_RAW,SOCK_SEQPACKET

protocol:

协议类别

0,IPPROTO_TCP,IPPROTO_UDP,IPPROTO_SCTP

返回值:

套接字

通过socket调用返回一个socket描述符后,在使用socket进行网络传输以前,必须配置该socket。

面向连接的socket客户端通过调用Connect函数在socket数据结构中保存本地和远端信息。

无连接socket的客户端和服务端连同面向连接socket的bind函数将一个地址绑定到套接字

intbind(intsockfd,conststructsockaddr*myaddr,socklen_taddrlen);

#include

sockfd:

socket套接字描述符

myaddr:

指向特定于协议的地址结构指针

addrlen:

该地址结构的长度

返回值:

0,成功;其他,失败

structsockaddr结构类型是用来保存socket信息的:

#include

structsockaddr{

   unsignedshortsa_family;/* 地址族, AF_xxx*/

charsa_data[14];/*14 字节的协议地址 */

};

sa_family一般为AF_INET,代表Internet(TCP/IP)地址族;sa_data则包含该socket的IP地址和端口号。

structsockaddr_in{//后面编程也会用到的结构体

   shortintsin_family;/* 地址族 */

   unsignedshortintsin_port;/* 端口号 */

   structin_addrsin_addr;/*IP地址 */

   unsignedcharsin_zero[8];/* 填充0 以保持和structsockaddr同样大小 */

   };

使用一个确知的端口来接收客户端的连接。

bind函数将一个地址绑定到套接字#include

intbind(intsockfd,conststructsockaddr*myaddr,socklen_taddrlen);

sockfd:

socket套接字描述符

myaddr:

指向特定于协议的地址结构指针

addrlen:

该地址结构的长度

返回值:

0,成功;其他,失败

建立连接与收发数据。

•intlisten(intsockfd,intbacklog);

listen函数可以将套接字由主动修改为被动,操作系统为该套接字设置一个连接队列,来记录所有连接到该套接字的连接。

sockfd:

socket监听套接字描述符

backlog:

连接队列的长度

•intaccept(intsockfd,structsockaddr*cliaddr,socklen_t*addrlen);

accept函数从已连接队列中取出一个已经建立的连接

•intconnect(intsockfd,conststructsockaddr*addr,socklen_tlen);

connect主动连接addr中的监听套接字。

•ssize_tsend(intsockfd,constvoid*buf,size_tnbytes,intflags);//发送数据

•ssize_trecv(intsockfd,void*buf,size_tnbytes,intflags);//接受数据

以上是对socket编程的一些主要函数进行介绍,接下来的编程中就会用到这些函数。

2.1.4QT编程框架

QT是一个跨平台的C++GUI应用框架,它给应用程序开发者提供建立友好的图形用户界面所需要的所有功能。

QT具有面向对象、真正的组件编程、易于扩展的特点。

QT的核心机制是信号和槽。

信号和槽是QT的一种高级接口,主要应用于对象之间的通信。

它是QT自定义的一种通信机制,独立于标准的C/C++语言,使用QT的信号和槽,就必须借助一个QT的工具moc,moc是一个C++预处理器,为高层次的事件处理自动生成附加代码。

信号是对象发射出来的,并且只有定义过该信号的类及其派生类才能发射出这个信号。

当发射一个信号时,与信号相关联的槽函数将被立刻执行。

信号和槽机制独立于任何GUI时间循环。

只有所有的槽函数返回后发射函数才返回。

如果多个槽函数与一个信号相关联,当该信号被发射时,槽函数会一个接一个的执行,但是它们

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 语文

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

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