《delphi论文局域网聊天程序的实现》由会员分享,可在线阅读,更多相关《delphi论文局域网聊天程序的实现(27页珍藏版)》请在金锄头文库上搜索。
1、局域网的聊天程序的实现论文作者姓名:申请学位专业:申请学位类别:指导教师姓名(职称):论文提交日期:局域网的聊天程序的实现摘 要网络通讯是目前计算机用户进行交流最普遍的方式,各种各样的聊天软件也层出不穷;服务提供商也提供了越来越丰富的通讯服务功能。本文介绍了在Windows环境下开发局域网聊天程序思路和方法。系统使用流行的Delphi7.0开发软件,采用Socket技术实现网络通讯。数据库使用Delphi自带的Database desktop。系统采用典型的C/S(服务器/客户端)构架。系统主要实现了用户注册、登录、聊天、服务器管理等功能。本系统从需求分析、系统的设计、具体功能的实现都严格遵循
2、了软件设计工程的思想。关键词: Socket; TCP/IP; C/SThe Implementation of LAN Chatting ProgramAbstractNetwork is the most popular way of communication between computer users, therefore a lot of chatting softwares come out; on the other hand, more communication services are provided by the ISP. This paper introduces
3、the ideas and methods of LAN chatting program which are developed on Windows. This system is developed by the Delphi7.0 software, and uses the Socket technology to implement network communications. Database using its own database desktop. Software is based on C/S architecture. The system mainly impl
4、ements the functions of user registration, login, chatting, server management etc. From requirement analysis, outline design, detailed design to coding, function test, the implementation of the function in this essay absolutely follow the process of the software development.Key words: Socket; TCP/IP
5、; C/S目 录论文总页数:22页1 引 言12 局域网聊天程序系统分析12.1 系统理论基础12.1.1 TCP/IP的特点12.1.2 客户机/服务器模式22.1.3 Socket介绍32.2 系统需求分析52.3 系统设计目标62.4 系运行环境62.5 系统开发环境63 局域网聊天程序系统设计73.1 系统结构设计73.2 数据库设计73.3 客户端服务器功能设计73.4 客户端设计83.5 服务器端设计93.6 聊天中公聊和私聊的设计103.7 界面设计113.7.1 客户端界面设计113.7.2 服务器界面设计134系统实现及核心代码144.1 网络通信核心代码144.2 用户注册
6、登录下线模块功能代码155 系统测试175.1 测试方法175.2 测试结果175.3 测试结论185.4 程序运行截图18结 论19参考文献20致 谢21声 明221 引 言即时通讯软件的出现正在逐渐改变人们的沟通与交际方式。无论近在咫尺,还是远隔重洋,也只是在键盘和鼠标之间就可以解决问题。即时通讯服务非常适合企业内部或企业和客户之间的交流。网络聊天程序.越来越影响着我们的网络生活。习惯了通过类似ICQ、QQ、MSN之类的程序和朋友聊天、发信息,不过所有聊天程序都需要Internet的支持,而无法在局域网内部“大显身手”,那么你是否想到过要让单位内部的员工,寝室周围的同学,不用上Intern
7、et就可以轻松体验到聊天的快乐呢?基于以上原因,开发局域网聊天程序就有了必要性,让单位员工或寝室同学不出内网就能自由聊天。随着全球信息化进程的不断发展,网络也在飞速发展。出于高效、快速地处理各种事务的目的,越来越多的企业和单位在其内部使用局域网来进行工作和交流。在内部局域网的帮助下,企业得以简化信息流程,提高信息交换的速度,从而提高工作效率。然而,随着局域网规模的扩大,业务量的增加,在局域网上运行的应用越来越多,如知识库、网络会议、数据库应用和数据的同步与备份等,这些应用对局域网的信息吞吐、处理能力的要求也越来越高。这些在原有局域网设计之初未曾考虑到的新情况的出现使得局域网不堪重负,容易发生信
8、息阻塞,此时,局域网不但不能提高生产效率,反而成为工作效率的瓶颈。为了解决上述矛盾,前辈们提出了许多方法。提升网络带宽及增加服务器的吞吐能力是解决此矛盾的一种方法。然而,从局域网运行的成本方面考虑,无论是单纯地提升网络带宽或增加服务器的吞吐能力都不能从根本上解决局域网资源紧张的问题,对旧有局域网的大规模硬件改造反而会增加成本的负担。基于Socket的局域网聊天室是局域网通信软件的具体实例之一,它很好地诠释了Socket通信的原理,并且在局域网部通信、教学、讨论等应用中都具有一定的实用价值。它具有信息收发速度快,保密性好,占用网络带宽资源低,占用服务器吞吐能力低,易于编程实现等优点。2 局域网聊
9、天程序系统分析2.1 系统理论基础2.1.1 TCP/IP的特点TCP/IP协议的核心部分是传输层协议(TCP、UDP),网络层协议(IP)和物理接口层,这三层通常是在操作系统内核中设计。因此用户一般不涉及。TCP是面向连接的,通信双方保持一条通路,好比目前的电话线,使用telnet登陆BBS,用的就是TCP协议;UDP是无连接的,通信双方都不保持对方的状态,浏览器访问Internet时使用的HTTP协议就是基于UDP协议的。编程时,编程界面有两种形式:一、是由内核心直接提供的系统调用;二、使用以库函数方式提供的各种函数。前者为核内设计,后者为核外设计。用户服务要通过核外的应用程序才能设计,所
10、以要使用套接字(socket)来设计。2.1.2 客户机/服务器模式C/S结构(Client/Server结构)是大家熟知的客户机和服务器结构。它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到Client端和Server端来实现,降低了系统的通讯开销。目前大多数应用软件系统都是Client/Server形式的两层结构,由于现在的软件应用系统正在向分布式的Web应用发展,Web和Client/Server 应用都可以进行同样的业务处理,应用不同的模块共享逻辑组件;因此,内部的和外部的用户都可以访问新的和现有的应用系统,通过现有应用系统中的逻辑可以扩展出新的应用系统。这
11、也就是目前应用系统的发展方向。首先服务器方要启动,并根据请求提供相应服务:(1)打开一通信通道并告知本地主机,它在某一公认地址端口上(如http为80)接受客户请求。(2)等待客户请求到达该端口。(3)接收到重复服务请求,处理该请求并发送应答信号。接收并发服务请求,要激活一新进程来处理这个客户请求。新进程处理此客户请求,并不需要对其他请求做出应答。服务完成后,关闭此新进程与客户的通信链路,并终止。(4)返回第二步,等待另外的客户请求(5)关闭服务器。客户方:(1)打开一通信通道,并连接到服务器所在主机的特定端口。(2)向服务器发出服务请求报文,等待并接收应答;继续提出请求。(3)请求结束后关闭
12、通信通道并终止。从上面的描述过程可知:(1)客户与服务器进程的作用是非对称的。因此编码不同。(2)服务进程一般是先于客户请求启动的。只要系统运行,该进程一直存在,直到正常终止或者强迫终止。在TCP/IP网络中两个进程间的相互作用的主机模式是客户机/服务器模式(Client/Server model)。该模式的建立基于以下两点:1、非对等作用;2、通信完全是异步的。客户机/服务器模式在操作过程中采取的是主动请求服务响应的方式,如图1所示:图1 客户端服务器模式2.1.3 Socket介绍Socket是建立在传输层协议(主要是TCP和UDP)上的一种套接字规范,最初是由美国加州Berkley大学提
13、出,它定义两台计算机间进行通信的规范(也是一种编程规范),如果说两台计算机是利用一个“通道”进行通信,那么这个“通道”的两端就是两个套接字。套接字屏蔽了底层通信软件和具体操作系统的差异,使得任何两台安装了TCP协议软件和实现了套接字规范的计算机之间的通信成为可能。微软的Windows Socket规范(简称Winsock)对Berkley的套接字规范进行了扩展,利用标准的Socket的方法,可以同任何平台上的Socket进行通信;利用其扩展,可以更有效地实现在Windows平台上计算机间的通信。Socket减轻了编写计算机间通信软件的难度;标准的Socket的应用程序框架如下:Server方:
14、Socket() 新建一个SocketBind() 同服务器地址绑定 Listen() Accept()block waitread()接受消息,在windows平台中,方法为send(TCP),或者是send to(UDP)处理服务请求Write()发送消息,在windows平台中,方法为send(TCP), 或者为send to(UDP)。Client方相对简单:Socket()Connect()通过一定的port连接特定的服务器,这是与服务器建立连接Write()Read()。Socket可以是基于TCP的,也可以是基于UDP,同时Socket甚至建立在其他的协议,比如IPX/SPX,D
15、ECNet等。在新建一个Socket时,可以指定新建何类Socket。Bind()用来同服务器的地址绑定,如果一个主机只有一个IP地址,实际上绑定的作用就相对多余了。Listen()开始监听网络,Accept()用于接受连接,其返回值是保持同客户机联系的Socket。在Delphi中,其底层的Socket也应该是Windows的Socket。Inprise在Delphi中对Windows Socket进行了有效的封装,使得用户可以很方便地编写网络通信程序。Socket系统调用包括创建Socket、将创建的Socket与本地端口绑定、建立Socket连接服务器、监听是否有连接、请求数据的可控缓冲发送和可控缓冲接收,到最后关闭Socket。首先在服务器方,利用socket()函数建立流式套接字,返回套接字号s,接着利用bind()函数将套接字s与本地地址绑定,紧接着利用listen()函数通知TCP,监听客户方,服务器准备接收连接,没有连接的话,服务器方通过closesocket()关闭套接字s,服务结束。有连接的话,在客户方,通过socket()函数建立流