您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 广告经营 > 基于TCP协议网上聊天程序
桂林电子科学大学课程设计说明书用纸编号:计算机网络课程设计说明书``题目:基于TCP协议网上聊天程序系别:专业:学生姓名:学号:指导教师:2013年3月27日桂林电子科学大学课程设计说明书用纸第1页共21页目录1设计任务.......................................................21.1系统设计目标..................................................................................................................21.2聊天程序的功能.............................................................................................................22系统分析.......................................................22.1系统理论基础...................................................................................................................22.2客户机/服务器模式......................................................................................................32.3Sokect介绍.....................................................................................................................42.4系统开发环境..................................................................................................................52.5系统结构设计..................................................................................................................53总体设计.......................................................53.1体系结构设计..................................................................................................................53.2网络通信设计..................................................................................................................63.3模块设计...........................................................................................................................83.31服务器............................................................................................................................83.32客户端............................................................................................................................94详细设计......................................................104.1设计服务器和客户端的界面....................................................................................104.2实现服务器和客户端通过网络通信.......................................................................114.3实现多个客户端之间的实时聊天功能..................................................................115总结..........................................................166使用说明......................................................16参考文献.........................................................20桂林电子科学大学课程设计说明书用纸第2页共21页1设计任务1.1系统设计目标深入理解计算机网络基本原理,将书本上抽象的概念与具体的实现技术相结合,体会网络协议的设计与实现过程,以及专业技术人员所使用的基本方法和技巧。基于TCP协议网上聊天程序实现一简单的聊天程序,实现网上聊天,包括服务器和客户端。要求:(1)支持多人聊天。(2)客户端具有图形化用户界面。1.2聊天程序的功能客户端使用简便,服务器端运行稳定。客户端与服务器端可运行在多种系统平台,具有良好的兼容性能。客户端与服务器端功能独立,可独立运行在不同的计算机上或运行在同一台计算机上,具有最大的灵活性。根据任课教师的要求及我自己的编程能力,写出以下的功能:1、登录时只需要提供用户名即可,无需输入密码。2、允许多人在线聊天。3、聊天发送的消息包括:用户名称、发送时间及正文。4、某用户刚登录服务器时,服务器需对其发送实时在线用户列表。5、某用户登录或退出程序时都需要给服务器发送一个消息以通知其他用户。6、能够查看聊天记录。2系统分析2.1系统理论基础TCP/IP的特点TCP/IP协议的核心部分是传输层协议(TCP、UDP),网络层协议(IP)和物理接口层,这三层通常是在操作系统内核中设计。因此用户一般不涉及。TCP是面向连接的,通信双方保持一条通路,好比目前的电话线,使用telnet登陆BBS,用的就是TCP协议;UDP是无连接的,通信双方都不保持对方的状态,浏览器访问Internet时使用的HTTP协议就是基于UDP协议的。编程时,编程界面有两种桂林电子科学大学课程设计说明书用纸第3页共21页形式:一、是由内核心直接提供的系统调用;二、使用以库函数方式提供的各种函数。前者为核内设计,后者为核外设计。用户服务要通过核外的应用程序才能设计,所以要使用套接字(socket)来设计。2.2客户机/服务器模式C/S结构(Client/Server结构)是大家熟知的客户机和服务器结构。它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到Client端和Server端来实现,降低了系统的通讯开销。目前大多数应用软件系统都是Client/Server形式的两层结构,由于现在的软件应用系统正在向分布式的Web应用发展,Web和Client/Server应用都可以进行同样的业务处理,应用不同的模块共享逻辑组件;因此,内部的和外部的用户都可以访问新的和现有的应用系统,通过现有应用系统中的逻辑可以扩展出新的应用系统。这也就是目前应用系统的发展方向。首先服务器方要启动,并根据请求提供相应服务:(1)打开一通信通道并告知本地主机,它在某一公认地址端口上(如http为80)接受客户请求。(2)等待客户请求到达该端口。(3)接收到重复服务请求,处理该请求并发送应答信号。接收并发服务请求,要激活一新进程来处理这个客户请求。新进程处理此客户请求,并不需要对其他请求做出应答。服务完成后,关闭此新进程与客户的通信链路,并终止。(4)返回第二步,等待另外的客户请求(5)关闭服务器。客户方:(1)打开一通信通道,并连接到服务器所在主机的特定端口。(2)向服务器发出服务请求报文,等待并接收应答;继续提出请求。(3)请求结束后关闭通信通道并终止。从上面的描述过程可知:(1)客户与服务器进程的作用是非对称的。因此编码不同。(2)服务进程一般是先于客户请求启动的。只要系统运行,该进程一直存在,直到正常终止或者强迫终止。在TCP/IP网络中两个进程间的相互作用的主机模式是客户机/服务器模式(Client/Servermodel)。该模式的建立基于以下两点:1、非对等作用;2、通信完全是异步的。客户机/服务器模式在操作过程中采取的是主动请求服务响应的方式。桂林电子科学大学课程设计说明书用纸第4页共21页2.3Socket介绍Socket是建立在传输层协议(主要是TCP和UDP)上的一种套接字规范,最初是由美国加州Berkley大学提出,它定义两台计算机间进行通信的规范(也是一种编程规范),如果说两台计算机是利用一个“通道”进行通信,那么这个“通道”的两端就是两个套接字。套接字屏蔽了底层通信软件和具体操作系统的差异,使得任何两台安装了TCP协议软件和实现了套接字规范的计算机之间的通信成为可能。微软的WindowsSocket规范(简称Winsock)对Berkley的套接字规范进行了扩展,利用标准的Socket的方法,可以同任何平台上的Socket进行通信;利用其扩展,可以更有效地实现在Windows平台上计算机间的通信。Socket减轻了编写计算机间通信软件的难度;标准的Socket的应用程序框架如下:Server方:Socket()[新建一个Socket]--Bind()[同服务器地址绑定]--Listen()--Accept()--blockwait--read()[接受消息,在windows平台中,方法为send(TCP),或者是sendto(UDP)]--处理服务请求--Write()[发送消息],在windows平台中,方法为send(TCP),或者为sendto(UDP)。Client方相对简单:Socket()--Connect()[通过一定的port连接特定的服务器,这是与服务器建立连接]--Write()--Read()。Socket可以是基于TCP的,也可以是基于UDP,同时Socket甚至建立在其他的协议,比如IPX/SPX,DECNet等。在新建一个Socket时,可以指定新建何类Socket。Bind()用来同服务器的地址绑定,如果一个主机只有一个IP地址,实际上绑定的作用就相对多余了。Listen()开始监听网络,Accept()用于接受连接,其返回值是保持同客户机联系的Socket。在VC++2008中,其底层的Socket也应该是Windows的Socket。Inprise在VC++2008中对WindowsSocket进行了有效的封装,使得用户可以很方便地编写网络通信程序。Socket系统调用包括创建Socket、将创建的Socket与本地端口绑定、建立Socket连接服务器、监听是否有连接、请求数据的可控缓冲发送和可控缓冲接收,到最后关闭Socket。首先在服务器方,利用socket()函数建立流式套接字,返回套接字号s,接着利用bind()函数将套接字s与本地地址绑定,紧接着利用listen()函数通知T
本文标题:基于TCP协议网上聊天程序
链接地址:https://www.777doc.com/doc-4860018 .html