局域网聊天软件设计与实现本科论文.doc
《局域网聊天软件设计与实现本科论文.doc》由会员分享,可在线阅读,更多相关《局域网聊天软件设计与实现本科论文.doc(54页珍藏版)》请在三一办公上搜索。
1、局域网聊天软件设计与实现摘 要局域网聊天软件是在Linux系统下运行的一个应用程序,程序用c+语言编写。本程序有如下功能:用户列表自动刷新、通过TCP通信协议进行消息收发、MYsql数据库保存用户名与密码。该设计是一个简单的局域网聊天软件,适用于企业内部和实验室使用,不与互联网进行数据交换,具有高速、安全等优势。本文着重介绍下列内容:对用户上下线消息通知、聊天消息收发等进行数据解析;TCP网络编程,讲述用TCP创建Client和Server以及收发数据的实现;最后对本设计的具体实现方法和设计实现流程进行讲解以及程序运行分析。关键词: Linux;TCP;Socket;Mysql数据库;C+ T
2、he Design And Implementation of The LAN Chat SoftwareAbstractThe LAN chat tool is An application under Linux.The application written by C+ language.This program has the following functions: sending broadcast when login and exit,sending and receiving messages by the TCP communication protocol, using
3、MYsql database to save chat messages. it is most often used to chat in enterprise and laboratory, it is working without data exchange from Internet,so it can transmit data high speed and security. This paper focuses on the following contents: the user online and offline message notification, chat me
4、ssage send and receive data analysis; TCP network programming, here tells the method of using TCP to create client and Server to send and receive data;Finally introduce the design method and implementation process of my graduation design and running the application.Keywords: Linux;TCP/IP;Socket;Mysq
5、l database;C+目录摘 要iAbstractii1 绪论11.1 课题背景11.2 目的和意义11.3 研究现状12 系统分析32.1 系统理论基础32.1.1 C/S架构32.1.2 TCP32.1.3 Socket42.1.4 QT编程框架62.2 可行性研究102.3 需求分析112.4 系统运行环境113 系统设计123.1 系统结构设计123.2 客户端服务器功能设计123.3 客户端设计133.4 服务器端设计143.5 群聊和私聊模块的设计164 程序描述与详细描述174.1 服务器端验证客户端的登录信息174.1.1 功能及实现174.1.2 技术概要184.2 服务
6、器端处理用户消息204.2.1 功能及实现204.2.2 技术概要214.3 客户端读取服务器发送的数据234.3.1 功能及实现234.3.2 技术概要254.4客户端用户列表的更新255 系统实现275.1 登录模块设计275.2 注册模块设计285.3 群聊模块设计295.4 私聊模块设计32结论34参考文献35致谢361 绪论1.1 课题背景随着信息化的广泛普及,网络这种新兴事物在今年来得到前所未有的普及和发展,基于网络的各种应用层出不穷,让各个年龄及阶层的用户体会到了不同的个性化服务,人们的生活方式已经与网络紧密的结合在一起。中小型企业的领导也认识到提高企业信息化的必要性,为了让企业
7、在发展迅速的信息时代生存下去,增强企业的竞争力,就要求有一个良好的平台来让企业员工之间的交流和通信,特别是领导和员工之间的沟通与交流,因此即时聊天交流系统就应运而生。伴随着企业规模的不断扩大,企业的各种信息也越来越私密,企业只希望员工通过内部网络进行交流与沟通,最大限度避免机密信息通过Internet泄漏到外部。为了解决上述问题,从而提出了局域网聊天软件的构想,通过该软件,企业的员工可以随时进行消息传递,即提高了效率,又保护了信息的私密与安全性。软件开发是一个十分复杂的过程,这里对软件开发的基本过程和方法进行介绍,并列举相关的实例加以说明。1.2 目的和意义本论文主要说明基于Linux平台的局
8、域网聊天软件的设计与实现。详细阐述开发中所用到的相关技术,并具体分析各个模块的功能和实现方法。本软件能够满足小型企业或小型局域网内部即时通信的需要,提高工作效率。1.3 研究现状1996年11月,出现了ICQ,于是第一款互联网IM(Instant Messenger,即时通讯)应运而生,随后短短数年里成为了一个巨大的IM产业。到现在,IM应用工具成为了最热门的网络应用之一。国内各种外聊天工具花样繁多。而作为全球第一款即时通讯工具的ICQ,经过不断的发展,如今在业内的地位已经无人能够撼动。ICQ名字是英文“I seek you”的缩写,即“我找你”。ICQ最初只有两个特性,一个是用户列表,另一个
9、是即时聊天。但是一出世就收到网民的喜爱,半年里注册用户就达到了85万,1998年这个数字更是翻了14多倍,注册用户达到了1200多万人。ICQ的迅速发展也让在桌面软件领域独步天下的微软与互联网领头羊的Yahoo嗅到了商机,分别推出了MSN与Yahoo Messenger,形成了即时通讯市场的雏形。ICQ风行全球的时候,国内也推出了各种仿ICQ的中文IM工具,现在国内的市场主要有微软的MSN、腾讯的QQ、雅虎的雅虎通等等。腾讯的QQ占据国内市场的70%以上。随着IM应用的发展,其功能也不断的丰富,除了用户列表与即时聊天,表情图片也成为了它的一个重要特性,此外文件传输、视频聊天、游戏等功能也被集成
10、到了IM应用中。如今,IM不是一个简单的聊天工具,而是一个集信息资讯、休闲娱乐、交流互动的平台,它上面的语音、音乐点播、视频、信息共享等新的应用层出不穷。随着IM应用的不断成熟,已经形成了IM产业链。IM应用也成为了现代人们与现代经济中不可缺少的一部分。互联网技术的发展使信息在传递方面也有了崭新的一面。聊天软件成为了信息传递最重要的方式,它可以让人们随时随地进行信息交流,让人们更好的了解彼此。聊天软件人性化的设计可以让每个用户都能得心应手的使用,获得了更多人的青睐。Internet的出现让整个世界连通起来,而聊天软件的出现把每一位网上的用户联通起来。网络应用的不断发展,让聊天软件成为最热门的应
11、用之一。经过进来的发展,聊天软件已不再是简单的通讯工具,而是成为集互动交流、休闲娱乐为一体的多元化的互联网应用平台,它的出现给人们彼此间的沟通带来了无比的方便,通过聊天软件人们可以建立深刻的友情,让聊天软件更加充满了活力与生机。 2 系统分析2.1 系统理论基础2.1.1 C/S架构C/S结构的基本原则是将计算机的应用任务分解成多个子任务,由多台计算机分工合作完成。Client端完成数据的处理,数据的表示及用户接口功能;Server端完成DBMS的核心功能。这种架构的优点是具有强大的事务处理与数据操作能力,开发的模型比较简单,易于人们接受和理解。系统的应用程序和服务器构建在不同的计算机上运行。
12、在C/S架构中,各个构建能够充分隔离,应用程序的开发集中于数据的浏览与查询,数据库服务器开发集中于数据的管理功能,有利于系统的安全性。服务器与客户端直接相连,实时性良好。可以充分发挥客户端的处理能力,可以在客户端把一部分工作处理后在提交给服务器。客户端的响应速度快并且应用服务器运行数据的负荷也比较轻。缺点一是应用服务器的运行数据负荷较轻。最简单的C/S架构的数据应用有两个部分,即客户应用程序与数据库服务器程序,可以分别称作前台程序和后台程序。后台程序运行数据库服务器程序,服务器一旦启动,就随时等待响应前台程序发来的请求;前台程序运行在用户的电脑上,当前台程序要对数据库中的数据进行任何操作时,就
13、自动寻找后台程序,发送请求,后台程序根据预定的规则做出应答。二是数据的存储管理功能比较透明,在数据库中,数据的存储管理,是由服务器与客户端分别进行的,客户端不能违反的规则是在服务器中体现的。对于客户端是透明的,客户端无法干涉背后的过程。在这种架构下,数据库不能成为真正公共的、专业化的仓库,要受到专门的管理。2.1.2 TCPTCP协议即TCP传输控制协议,是一种面向连接的、可靠的传输层协议,是专门为广域网设计的。它的标准是在一系列称为RFC的文档中。TCP是面向连接的,所以通信双方在通信之前必须先建立TCP连接,通信结束之后必须断开TCP连接。TCP的可靠性通过下列方式来体现:(1)把应用数据
14、分割成最适合TCP发送的数据块。保持应用程序产生的数据长度不变。报文段或段(segment)是由TCP传递给IP的信息单位。(2)TCP发出一个段后,都启动一个定时器,等待接受目的端确认收到这个段。如果不能及时收到目的端的确认,TCP将重发这个段。如果TCP收到发送端的数据,将发送一个确认。(3)TCP保持它首部和数据的检验和。它是一个端到端的检验和,是为了检测数据在传输过程中是否变化。如果接受到的段的检验和有差错,则TCP将丢弃这个报文段并不发送确认(希望发端超时并重发)。(4)TCP报文段是作为IP数据报来传输的,而IP数据报可能会失序,因此TCP报文段也可能会失序。所以,TCP将对收到的
15、数据进行重新排序,然后将正确的顺序交给应用层。(5)IP数据报会发生重复,所以必须丢弃TCP接收端重复的数据。(6)TCP提供流量控制功能。TCP连接的双方都有固定大小的缓冲空间。TCP接收端只允许TCP发送端发送TCP接收端缓冲区所能接纳的数据。TCP使用三次握手协议建立连接,下图就是三次握手建立连接的过程。图2-1 TCP三次握手示意图首先客户端发送SYN(SEQ=x)报文给服务器端,并进入SYN_SEND状态。其次服务器端收到SYN报文后回应一个SYN(SEQ=y)ACK(ACK=x+1)的报文,并进入SYN_RECV状态。最后客户端收到服务器端的SYN报文并回应一个ACK(ACK=y+
16、1)报文,然后进入Established状态。TCP经过四次握手终止连接,下图就是四次握手终止连接的过程:图2-2 TCP链接释放示意图首先应用进程调用close函数,称该端执行“主动关闭”(active close)操作。于是该端的TCP发送一个FIN分节以表示数据发送完毕。接着接收到这个FIN的对端执行 “被动关闭”(passive close)操作。一段时间后接收到这个文件结束符的应用进程将调用close函数关闭它的套接字,该段的TCP也发送一个FIN。最后接收这个最终FIN的原发送端TCP确认这个FIN。2.1.3 SocketSocket接口是TCP/IP网络的API,Socket接
17、口定义了许多函数或例程2,程序员可以用它们来开发TCP/IP网络上的应用程序。要学的TCP/IP网络编程,必须理解Socket接口,Socket(套接字)是BSD提供的网络应用编程接口,现在它已经是网络编程中的标准。据传输等操作都是通过该Socket实现的。常用的Socket类型有两种:流式Socket (SOCK_STREAM)和数据报式Socket(SOCK_DGRAM)。流式是一种面向连接的Socket,针对于面向连接的TCP服务应用;数据 报式Socket是一种无连接的Socket,对应于无连接的UDP服务应用。Linux系统中的网络编程通过Socket接口实现。Socket既是一种特
18、殊的IO,它也是一种文件描述符。一个完整的Socket都有一个相关描述协议,本地地址,本地端口,远程地址,远程端口;每一个Socket有一个本地的唯一Socket号,由操作系统分配。为了建立Socket,程式能够调用Socket函数,该函数返回一个类似于文档描述符的句柄。socket函数原型为: int socket(int family, int type, int protocol); #include 参数说明:family:协议族 AF_INET,AF_INET6,AF_LOCAL,AF_ROUTE,AF_KEY type:套接字类型 SOCK_STREAM,SOCK_DGRAM,SO
19、CK_RAW ,SOCK_SEQPACKET protocol:协议类别 0,IPPROTO_TCP,IPPROTO_UDP,IPPROTO_SCTP 返回值:套接字 通过socket调用返回一个socket描述符后,在使用socket进行网络传输以前,必须配置该socket。面向连接的socket客户端通过调用Connect函数在socket数据结构中保存本地和远端信息。无连接socket的客户端和服务端连同面向连接socket的bind函数将一个地址绑定到套接字 int bind(int sockfd, const struct sockaddr *myaddr, socklen_t ad
20、drlen); #include sockfd: socket套接字描述符 myaddr: 指向特定于协议的地址结构指针 addrlen:该地址结构的长度 返回值:0,成功;其他,失败 struct sockaddr结构类型是用来保存socket信息的:#include struct sockaddr unsigned short sa_family; /*地址族,AF_xxx */ char sa_data14; /* 14字节的协议地址*/;sa_family一般为AF_INET,代表Internet(TCP/IP)地址族;sa_data则包含该socket的IP地址和端口号。struct
21、 sockaddr_in /后面编程也会用到的结构体short int sin_family; /*地址族*/unsigned short int sin_port; /*端口号*/struct in_addr sin_addr; /* IP地址*/unsigned char sin_zero8; /*填充0以保持和struct sockaddr同样大小*/; 使用一个确知的端口来接收客户端的连接。bind函数将一个地址绑定到套接字 #include int bind(int sockfd, const struct sockaddr *myaddr, socklen_t addrlen);
22、sockfd: socket套接字描述符 myaddr: 指向特定于协议的地址结构指针 addrlen:该地址结构的长度 返回值:0,成功;其他,失败 建立连接与收发数据。 int listen(int sockfd, int backlog); listen函数可以将套接字由主动修改为被动,操作系统为该套接字设置一个连接队列,来记录所有连接到该套接字的连接 。sockfd: socket监听套接字描述符 backlog:连接队列的长度 int accept(int sockfd, struct sockaddr *cliaddr, socklen_t *addrlen);accept函数从已
23、连接队列中取出一个已经建立的连接 int connect(int sockfd, const struct sockaddr *addr, socklen_t len);connect 主动连接addr中的监听套接字。 ssize_t send(int sockfd, const void *buf, size_t nbytes, int flags);/发送数据 ssize_t recv(int sockfd, void *buf, size_t nbytes, int flags);/接受数据以上是对socket编程的一些主要函数进行介绍,接下来的编程中就会用到这些函数。2.1.4 QT编
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 局域网 聊天 软件设计 实现 本科 论文

链接地址:https://www.31ppt.com/p-2400858.html