




已阅读5页,还剩32页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于TCP/IP的网络聊天工具的设计与实现摘要Socket 接口是TCP/ IP 网络的API(应用程序接口) ,Windows Sockets (Winsock) 是一个基于Socket 模型的API。本文通过论述了Windows 环境下的实现计算机数据传输服务的机制,提供了一种网络环境下实现计算机通信的手段,分析了TCP/ IP 协议的体系结构、组成与功能以及通过TCP/ IP 协议实现异构型网络互连的机理。对TCP/ IP 协议提供的两种通信功能进行了分析,辩证地提出了它们不同的应用场合。本聊天工具使用VC+语言和较成熟的微软的mfc71作为开发语言,本文详细介绍了本聊天工具的开发过程。并从系统的需求分析、系统分析、详细设计的整个开发过程进行全面论述。最后,给出了在TCP/ IP 基础上开发通信应用程序的编程模型和实现要点,对用户开发应用程序有一定参考意义。关键词: 网络;TCP/ IP 协议 通信编程 VC+Abstract Socke interface is a API of TCP/ IP network and Winsock is another API which is base of the model of Socket ,This article discuss a service mechanismof computer data communications, providing a means of achieve computer communications in networks environment , analyzes the system construction , composition and function of TCP/ IP protocol , and realization mechanism intercommunication between isomerous networks through TCP/ IP protocols. The paper also analyzes two kinds of communication functions provided by TCP/ IP protocols , and proposes their different application occasions dialectically .this article use takes fundamentally with the VC+ language,in detail introduced this management system management system performance history.And from system demand analysis, system analysis, detailed design entire performance history . Finally , the paper gives programming models and realization keys of developing communication programs , which will provide some reference value for users who develop application programs.Key words :network TCP/ IP protocols communication program VC+摘要1Abstract11 引言32系统分析42.1 需求分析42.2 技术分析42.2.1 Socket 编程的相关知识与技术42.2.2 程序语言的选择53.系统总体方案设计53.1 开发及运行环境53.2系统功能的总体逻辑层次63.3系统设计目标63.4系统功能64.系统的详细设计74.1用户层的设计74.2数据库层的设计错误!未定义书签。5系统功能实现105.1打开系统界面105.3系统主要功能模块的实现错误!未定义书签。5.3.1聊天室聊天功能模块的实现115.3.2二人私聊功能模块的实现错误!未定义书签。5.3.2文件传输功能模块的实现错误!未定义书签。4 结束语147 致谢15参考文献151 引言Internet上的聊天室一向是一个吸引人的地方,多用C语言或是web网络语言进行设计。Internet上数据传输协议主要有TCP和UDP。TCP是有连接协议它要求计算机进行对话时必须先建立连接。保证数据传送安全到达目的地。UDP是无连接协议。它只是将信息送到网络上,并不检查数据是否到达了目的地。要进行实时会话。则应该采用TCP协议。本程序采用的协议就是TCP协议。传输控制协议TCP (Transmission Control Protocol) 是Internet 最基本的网络通信协议, 它由一系列协议组成,其中核心协议是传输层的TCP和UDP( User Datagram Protocol, 用户数据报协议)协议。TCP 协议属于“ 面向连接,可靠传输”的类型, 面向连接的传输意味着在进行通信以前, 需要在两个系统之间建立逻辑连接, 在每个数据传输的过程中都需要进行应答以保证数据包的完整, 这种方法可以保证数据传输的可靠性,但所需的网络开销较大;UDP 协议属于“ 面向无连接, 不可靠传输”的类型, 该协议只负责接收和传送上层协议传递的消息, 它本身不做任何的检测、修改与应答, 网络开销一般要小于TCP协议。在优良的网络环境, UDP 的工作效率较TCP 协议要高。在Windows 环境下开发网络应用程序, 通常都是使用Microsoft的网络编程接口, 即Windows 套接字Windows Socket( 简称Winsock), 它包含在Winsock.dll 中的一组API 中,用于在网络上传输数据和交换信息, 编程人员需要熟悉和掌握相关的网络协议、系统的底层知识以及网络软硬件技术, 因而Winsock 编程相当复杂。所幸的是, MFC的CSocket类对WinSock 进行了有效的封装, 并不需要直接与Winsock 的API 打交道, 调用CSocket类的一些方法成员,就可以方便进行机器之间的通讯,使得对Winsock 的访问大大简化。1.1 网络聊天工具的特性(1)多功能。作为一种即时通信工具,一般聊天工具支持显示朋友在线、寻呼、聊天、即时传送文字、语音和文件等功能,支持视频功能的视频QQ。(2)超时空。通过互联网,信息传递摆脱了时空的限制,只要交流双方是与网络相连通的,不管对方身在何处,双方都可以进行即时对话。这种散点式的人际传播对于整个组织机构的健康运作有着不可低估的作用。(3)互动性。网络聊天接近于现实生活的最大量交流,是一种面对面的共时态的直接交流。它可以进行实时的一对一、一对多、多对多的互动交流,实时地对对方做出反应。可以通过留言,即使对方不在线,也可以在上线的同时第一时间收到信息。网络聊天工具还可以与移动通讯终端、IP 电话网、无线寻呼等多种通讯方式相连,是一种方便、实用、高效的即时通信工具。(4)平等性。网络世界的虚拟性、平等性以及网络信息传递的瞬时性,满足了大学生轻松交往的要求。正是这些特性,可以使大学生暂时掩盖自身任何的缺点和不足,可以摆脱现实交往中容易产生的各种矛盾,更不必顾及舆论的压力而使得师生在交流过程中受到更少的束缚,最终使大学生在虚拟的网络中能够更轻松地面对友(爱)情,交往需求在网络中得到充分的满足。(5)距离感。网络的距离掩盖了真实的缺点,容易产生美感。心理学家分析,距离可以使人产生朦胧,朦胧为想象提供了足够的空间,想象则可以产生美感。1.2 完成的功能本次毕业设计从实际工程应用角度出发,以计算机网络原理为指导,结合当前网络中的一些常用技术,编程实现基于TCP/IP的网络聊天工具,该聊天工具具有聊天室聊天、广播聊天、二人私聊以及文件传输功能的聊天工具网上聊天1.0版。2系统分析2.1 需求分析通过调查研究,要求系统满足有以下功能;1) 由于操作人员的计算机知识普遍较差,要求有良好的人机界面。2) 客户端操作,用户登录,进入聊天室。3) 实现广播聊天、聊天室聊天、二人私聊、文件传输四个功能。4) 服务端操作,显示所有在线用户,选择某用户后可以进行删除操作5) 系统退出。6) 系统要体现界面友好,使用方便的特性。2.2 技术分析2.2.1 Socket 编程的相关知识与技术Socket 进行网络通信有两种主要的方式。第一种为流方式(Stream Socket), 也称面向连接方式, 用于实现TCP 协议。在这种方式下, 两个应用程序之间先要建立一种虚拟的连接。只有两端的程序成功地进行了握手之后才能开始传输数据。其特点是通信可靠, 对数据有校验和重发的机制, 通常用作数据文件的传输, 如FTP、TELNET等。第二种为数据报文方式(Datagram Socket),又称无连接方式, 在进行数据传送以前两端的程序不需要任何沟通。数据报文方式由于取消了重发校验机制,能够达到较高的通信速率, 可以用作对数据可靠性要求不高的通信, 如实时的语音、图像转送、广播消息等。面向连接的Socket工作中有比较严格的操作次序。在这种类型的Socket 工作过程中,必须首先启动服务器端,通过调用socket()函数建立一个socket 对象, 然后调用bind()函数将该socket对象和本地网络地址绑定到一起,再调用listen()函数使该socket对象处于侦听状态,并规定它的最大请求的数量;之后要直等到客户机有连接请求的时候服务器才会再次被激活;收到客户机请求以后, 服务器调用accept()函数来决定是否接受该连接; 客户在建立Socket 对象后就可调用connect()函数和服务器建立连接; 连接一旦建立, 客户机和服务器之间就可以通过调用基本的网络I/O 函数来发送和接收数据; 一旦数据传送结束, 双方都必须关闭初始创建的socket 对象。在网络通信中, 由于网络拥挤或一次发送的数据量过大等原因, 经常会发生交换的数据在短时间内不能传送完、收发数据的函数不能返回的现象, 这种现象叫阻塞。Winsock 对有可能发生阻塞的函数提供了两种处理方式阻塞和非阻塞方式。在阻塞方式下, 收发数据的函数在被调用后一直要到传送完毕或者出错才能返回。阻塞方式是UNIX 中Socket 工作的默认方式, 可是在Windows 系统中这种方式是无法容忍的。在Windows 系统中, 如果一个函数长时间没有返回值, 系统就很难为其他的程序分配出运行时间, 常见的现象就是对输入没有响应, 刷屏缓慢, 系统反应迟钝等。因此, 在编程时, 应尽量使用非阻塞方式。2.2.2 TCP/IP协议介绍TCP/IP协议并不完全符合OSI的七层参考模型。传统的开放式系统互连参考模型,是一种通信协议的7层抽象的参考模型,其中每一层执行某一特定任务。该模型的目的是使各种硬件在相同的层次上相互通信。这7层是:物理层、数据链路层、网路层、传输层、话路层、表示层和应用层。而TCP/IP通讯协议采用了4层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。这4层分别为: 应用层:应用程序间沟通的层,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等。 传输层:在此层中,它提供了节点间的数据传送服务,如传输控制协议(TCP)、用户数据报协议(UDP)等,TCP和UDP给数据包加入传输数据并把它传输到下一层中,这一层负责传送数据,并且确定数据已被送达并接收。 互连网络层:负责提供基本的数据封包传送功能,让每一块数据包都能够到达目的主机(但不检查是否被正确接收),如网际协议(IP)。 网络接口层:对实际的网络媒体的管理,定义如何使用实际网络(如Ethernet、Serial Line等)来传送数据。2.2.3 程序语言的选择本系统采用VC+.NET 2003作为程序开发语言。VC+是Windows平台上的C+编程环境,学习VC要了解很多Windows平台的特性并且还要掌握MFC、ATL、COM等的知识,难度比较大。Windows下编程需要了解Windows的消息机制以及回调(callback)函数的原理;MFC是Win32API的包装类,需要理解文档视图类的结构,窗口类的结构,消息流向等等;COM是代码共享的二进制标准,需要掌握其基本原理等等。 VC作为一个主流的开发平台一直深受编程爱好者的喜爱,但是很多人却对它的入门感到难于上青天,究其原因主要是大家对他错误的认识造成的,严格的来说VC+不是门语言,虽然它和C+之间有密切的关系,如果形象点比喻的话,可以C+看作为一种“工业标准”,而VC+则是某种操作系统平台下的“厂商标准”,而“厂商标准”是在遵循“工业标准”的前提下扩展而来的。VC+应用程序的开发主要有两种模式,一种是WIN API方式,另一种则是MFC方式,传统的WIN API开发方式比较繁琐,而MFC则是对WIN API再次封装,所以MFC相对于WIN API开发更具备效率优势,但为了对WINDOWS开发有一个较为全面细致的认识,笔者在这里还是以讲解WIN API的相关内容为主线。3.系统总体方案设计3.1 开发及运行环境硬件平台:1) CPU:P4 1.8GHz。2) 内存:256MB以上。软件平台:1) 操作系统:Windows XP/ Windows 2000。2) 开发语言:VC+3) 开发平台:Visual Studio 20034) 分辨率:最佳效果1024768像素3.2系统功能的总体逻辑层次本次毕业采用了面向连接的数据流,即基于TCP协议的连接方式,其工作流程如图1 所示。图1面向连接的Socket 工作流程图3.3系统设计目标系统稳定性:在设计该系统时,很重要的一个问题就是系统的长期稳定运行,因为客户端可能很多个,考虑到系统的运行环境等条件,必须从系统分析的高度给与足够重视,保证服务器能够较长时间的运行系统健壮性:系统需要长期稳定地运行,而用户在日常的工作中要进行各种各样的操作,难免会产生各种各样的误操作和错误,这就打破了本系统的正常运行流程,可能导致预想不到的后果。因此,在本系统的设计过程中,我们将预先考虑各种各样的误操作及后果,采取相应的预防措施,确保不产生灾难性的后果,保证系统的健壮性。良好的适应性:系统必须具有良好的扩展能力和修改方便的特点,以适应不同的变化。只有建立了稳定的模型和良好的数据接口,才能保证系统具有良好的适应性。界面友好:用户界面是聊天工具与主要环节,所以,应充分考虑用户的习惯和喜好,以方便用户使用为原则。3.4系统功能本次毕业设计聊天工具主要实现以下功能:1) 客户端功能:用户登录,进入聊天室。广播聊天、聊天室聊天、二人私聊、文件传输四个功能。2) 服务端功能:显示所有在线用户,选择某用户后可以进行删除操作客户端功能模块图客户端广播聊天私人聊天聊天室聊天文件传输图2 客户端功能模块4.系统的详细设计4.1 系统设计的原理本程序基TCP/IP协议。采用服务器与客户端模式。选用VC+程序设计语言。服务器端连接过程简化为:设置连接所用的端口开始监听此端口接到请求后建立连接可以发送和接收数据不用了就关闭Socket连接。客户端简化为:设置服务器地址r要连接的地址设置连接是所用到的端口发送连接请求建立连接成功可以发送和接收数据不用了就关闭Socket连接。 MFC Windows Socket 类包括CAsyncSocket 和CSocket 类。Visual C+对众多的socket 函数进行了封装, MFC 提供的封装类是: CAsyncSocket 和CSocket 类, 它们使编程工作变得相对简单尤其是CSocket 类:首先CAsyncSocket 类所提供的唯一的抽象就是将与套接字相联系的Windows 消息以回调函数的形式表示, 因此它带来的唯一方便就是程序员无需自行处理Winsock 的I/O 模型, 而对于如阻塞处理、字节顺序差异以及Unicode 等依然负有责任并有灵活的控制权。其次,CSocket 类是CAsyncSocket 类的派生类, 它提供了对通过Carchive 对象使用套接字工作的更高级抽象。CSocket 类的使用比CAsynCSocket 类更加容易, 它继承了CAsyncSocket 类的许多封装了API 的成员函数, 并且管理了通信的大多数方面, 这使得用户从原来不得不使用原始API 或者CAsyncSocket 类的烦杂的工作中解脱出来。更加重要的是CSocket 和Carchive 类提供了对于同步操作Carchive 对象十分重要的阻塞功能, 且CSocket 通过与CSocketFile 和Carchive 一起使用来管理对象数据的发送和接收, 使发送数据和操作变得简单明了4.2 系统功能设计4.2.1 客户端功能程序设计首先介绍客户端的用户登录窗体,输入用户名和服务器ip地址后进入聊天室。输入用户名服务器ip登陆取消图3 客户端登陆窗口然后出现图4,客户端聊天主窗体。消息显示框发送消息传输文件(下拉框)选择聊天对象(复选框)二人私聊图 4功能及模块实现窗口图 4中聊天对象下拉框中,包括所有人选项和登陆某某用户名的下拉框选项,如下图5,所有人张三李四图5 选择用户下拉框点击文件传输按钮后,在文件传输对话框中会显示相应的传输文件,只要双击你所需要的文件,选择相应的存储路径后即可存储文件。本实验采用上述方式实现广播聊天、聊天室聊天、二人私聊、文件传输四个功能4.2.2 服务端程序设计启动服务端后进入张三 *时间 进入聊天室李四 *时间 进入聊天室在线用户:删除退出显示所有在线用户,选择某用户后可以进行踢线操作。 本实验采用VS 2003 为平台利用VC+开发语言进行程序编写。下面介绍Client端基本类:CChatSocket继承与CSocket类,主要用于TCP/IP通讯连接CSendview类用户显示消息:5系统功能实现5.1服务端的实现服务器端有个CSocket 的派生类CListeningSocket对象指针来监听端口等待用户登陆, 而用另一个CSocket 的派生类对象CClientSocket 的指针组来处理和每一个客户端的交互过程。派生类CListeningSocket的回调函数OnAccpet()与客户端建立套接字层次的连接。派生类CClientSocket 的回调函数OnReceive()与接收每一个已连接的数据传输。启动服务端,显示服务端界面:图6 用户管理界面打开客户端,显示客户端登陆界面:从名称的下拉列表框中选择登录的用户,单击确定,进入该用户聊天的界面,同时服务端也会显示出该用户的进入信息:5.2客户端功能模块的实现在聊天对象中,选择所有人,在聊天信息中,输入信息,单击发送信息。此功能用到的代码如下:void CSendView:OnSend() CChatDoc* pDoc = GetDocument();ASSERT_VALID(pDoc);CString strText;GetDlgItem(IDC_TEXT)-GetWindowText(strText);UpdateData(TRUE); if(strText=) return;CString ll; int j=m_typecom.GetCurSel(); if(j=0) ll.Format(%d,j); pDoc-msg.type=ll;pDoc-msg.from=pDoc-m_strHandle;pDoc-msg.to=to;if(sec)pDoc-msg.sec=TRUE;elsepDoc-msg.sec=FALSE;pDoc-msg.m_strText=strText;BYTE i1=GetRValue(pDoc-clr);BYTE i2=GetGValue(pDoc-clr);BYTE i3=GetBValue(pDoc-clr);(pDoc-msg.clr).Format(%d,%d,%d,i1,i2,i3);pDoc-SendMsg();strText=_T();GetDlgItem(IDC_TEXT)-SetWindowText(strText);当有很多用户进入聊天室后,在聊天对象中,选择想要聊天的人名,勾选二人世界,在聊天信息中,输入信息,单击发送信息。这时信息只显示在聊天人的客户端中,而在其他客户端,并不显示该信息。文件传输:局域网内文件分发的编程思路局域网内文件分发的编程思路是, 服务器软件和客户端软件使用同一个端口, 待连接以后, 客户端给服务器发送请求, 包括待传文件的文件名、文件大小等, 如果服务器接受, 就开始传文件。Socket 通信在Windows 中以排队形式由操作系统进行处理, 基本方式是请求和应答, 而且接收方和发送方必须相互协同工作,否则就会造成数据丢失。因此,不能用类似于for 的循环语句来实现对多组数据的发送,更不能用循环语句来接收数据; 另外, 对于较大的文件, 应该分批传输,一般每次1至4KB为宜,以保证数据传输的稳定性, 同时也不至于过多地占用系统资源。只要在添加需要传送的文件,其可以显示文件的大小和路径:接受文件:单击接受文件,打开文件传输窗体,双击需要接受的文件,选择保存路径,开始传输:此功能用到的主要代码如下:void CClient_FileTransferDlg:OnDblclkListFilelist(NMHDR* pNMHDR, LRESULT* pResult) / TODO: Add your control notification handler code hereNMLISTVIEW* pListView = (NMLISTVIEW*)pNMHDR;int iSel = pListView-iItem;if(iSel = -1)return;CString strFileName = m_ListFile.GetItemText(iSel, 0);CFileDialog dlg(FALSE, NULL, strFileName.GetBuffer(0), OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT, All Files(*.*)|*.*|, this);if(dlg.DoModal() != IDOK)return;CString strClientPath = dlg.GetPathName();CFile file;BOOL bOpen = file.Open(strClientPath, CFile:modeCreate|CFile:modeWrite, NULL);if(!bOpen)MessageBox(文件创建或打开失败!请确认路径再重试!);return;file.Close();MSGREQUEST msgRequest;msgRequest.iCommand = FILEDATA;msgRequest.lFileLength = m_ListFile.GetItemData(iSel);msgRequest.lFileOffset = 0;strcpy(msgRequest.sClientPath, strClientPath.GetBuffer(0);strcpy(msgRequest.sServerPath, m_ListFile.GetItemText(iSel, 5); DWORD dwStartTick = GetTickCount();char sStartTick20;sprintf(sStartTick, %u, dwStartTick);m_ListFile.SetItemText(iSel, 6, sStartTick);m_pClient-RequestFile(msgRequest);*pResult = 0;6 结束语如今, 人们不仅可以在网上查询自己需要的资源, 而且可以通过网络进行实时的沟通, 从实时性和有效性上都超过了用信件和E-Mail, 并且在费用上要低于电话。因而各种聊天服务备受用户青睐, 在这方面的开发与应用也较多1, 聊天服务也成为互联网提供的重要服务之一。互联网的大多数网站都建有聊天室, 并且有专业聊天网站提供聊天服务。进入20 世纪90 年代后, 随着计算机和网络技术的发展,很多数据处理系统都采用开放系统结构的客户机/服务器(Client/Server)网络模型,即客户机向服务器提交请求,服务器对请求做相应的处理兵执行被请求的任务,然后将结构返回给客户机。这种方式隐含了在建立客户机/服务器间通信是的非对称性。客户机/服务器模型工作时要求有一套为客户机和服务器所共识的惯例来保证服务能够被提供( 或被接受) , 这一套惯例包含了一套协议, 它必须在通信的两头都被实现。根据不同的实际情况, 协议可能是对称的或非对称的。在对称的协议中每一方都有可能扮演主从角色; 在非对称协议中一方被不可改变地认为是主机, 而另一方则是从机。一个对称协议地例子是Internet中用于终端仿真地Telnet, 而非对称协议地例子是Internet 中的http。无论具体的协议是对称的或是非对称的, 当服务被提供时必然存在客户进程和服务进程。一个服务程序通常在一个众所周知地地址监听客户对服务地请求, 也就是说, 服务进程一直处于休眠状态, 直到一个客户对这个服务地址提出连接请求。在这个时刻, 服务程序被“惊醒”并且为客户提供服务- 对客户地请求作出适当的反应。本文以Visual C+的MFC(微软基本类库)作为基本的开发基础, 使用Socket 套接字作为开发的应用程序开发模型, 完成了网络在线聊天系统的设计及实现过程, 通过测试表明该系统可以方便的建立连接, 断开连接, 实现网络在线聊天系统的在线好友查找, 发送消息和接收消息等功能。通过本次毕业设计,我也感受到了开源的方便,遇到什么问题,上网一查,就知道该怎么弄了,以前做个课程设计都是怕别人和我的一样,不愿意给别人看,现在知道了程序弄不出来是多么的着急,学习都是相互的,互相研究才能共同进步的.以后要多多注意这方面的事情,本次毕业设计是我工作前一次很好的演练和实践的机会,是培养独立思考问题和自学能力的锻炼,使我意识到必须努力学习才能才工作中体现自己的价值,适应社会的需要。7 致谢我的作品基于TCP/IP的网络聊天工具的设计与实现,达到了我预先的效果。在此我要在此衷心感谢老师的悉心指导,在他们的接触中,从他们一丝不苟的工作态度和平易近人的交谈中,我感受到了老师们扎实的知识、对工作的责任感和积极乐观的生活态度。我的论文的完成,离不开这位老师的指导与关爱。感谢在大学四年的学习生活中所有关心和帮助过我的各位老师和同学。参考文献1 Douglas E Comer , David L Stevens. Internet Working With TCP/ IP Vol :Design , Implementation and Internal M . 张娟,等译. 北京:电子工业出版社,1998.2 李鹏. 计算机通信技术及其程序设计M . 西安:西安电子科技大学出版社,1998.3 黄超. Windows网络编程M . 北京:人民邮电出版社,20004 刘运强,王汇源1Socket 和多线程在视频传输的应用J 山东大学学报(工学版) ,2004 ,34(2) :4525015 胡涛1Visual C + + 1NET 编程技术体验M1 北京:清华大学出版社,19916 苏炳秒,黄劲 基于Socket 技术的煤矿远程监控系统J 工矿自动化,2003 , (1) :3723917 袁立民 一种视频图像传输的多线程实现方法J 电子技术应用,1999 ,25(1) :4925018 蒋东兴 Windows Sockets 网络程序设计大全M北京:清华大学出版社,199919 王骞,等 一类网络控制系统的建模及分析J 控制工程,2004 ,11(6) :52925321基于TCP/IP的网络聊天工具的设计与实现摘要Socket 接口是TCP/ IP 网络的API(应用程序接口) ,Windows Sockets (Winsock) 是一个基于Socket 模型的API。本文通过论述了Windows 环境下的实现计算机数据传输服务的机制,提供了一种网络环境下实现计算机通信的手段,分析了TCP/ IP 协议的体系结构、组成与功能以及通过TCP/ IP 协议实现异构型网络互连的机理。对TCP/ IP 协议提供的两种通信功能进行了分析,辩证地提出了它们不同的应用场合。本聊天工具使用VC+语言和较成熟的微软的mfc71作为开发语言,本文详细介绍了本聊天工具的开发过程。并从系统的需求分析、系统分析、详细设计的整个开发过程进行全面论述。最后,给出了在TCP/ IP 基础上开发通信应用程序的编程模型和实现要点,对用户开发应用程序有一定参考意义。关键词: 网络;TCP/ IP 协议 通信编程 VC+Abstract Socke interface is a API of TCP/ IP network and Winsock is another API which is base of the model of Socket ,This article discuss a service mechanismof computer data communications, providing a means of achieve computer communications in networks environment , analyzes the system construction , composition and function of TCP/ IP protocol , and realization mechanism intercommunication between isomerous networks through TCP/ IP protocols. The paper also analyzes two kinds of communication functions provided by TCP/ IP protocols , and proposes their different application occasions dialectically .this article use takes fundamentally with the VC+ language,in detail introduced this management system management system performance history.And from system demand analysis, system analysis, detailed design entire performance history . Finally , the paper gives programming models and realization keys of developing communication programs , which will provide some reference value for users who develop application programs.Key words :network TCP/ IP protocols communication program VC+摘要1Abstract11 引言32系统分析42.1 需求分析42.2 技术分析42.2.1 Socket 编程的相关知识与技术42.2.2 程序语言的选择53.系统总体方案设计53.1 开发及运行环境53.2系统功能的总体逻辑层次63.3系统设计目标63.4系统功能64.系统的详细设计74.1用户层的设计74.2数据库层的设计错误!未定义书签。5系统功能实现105.1打开系统界面105.3系统主要功能模块的实现错误!未定义书签。5.3.1聊天室聊天功能模块的实现115.3.2二人私聊功能模块的实现错误!未定义书签。5.3.2文件传输功能模块的实现错误!未定义书签。4 结束语147 致谢15参考文献151 引言Internet上的聊天室一向是一个吸引人的地方,多用C语言或是web网络语言进行设计。Internet上数据传输协议主要有TCP和UDP。TCP是有连接协议它要求计算机进行对话时必须先建立连接。保证数据传送安全到达目的地。UDP是无连接协议。它只是将信息送到网络上,并不检查数据是否到达了目的地。要进行实时会话。则应该采用TCP协议。本程序采用的协议就是TCP协议。传输控制协议TCP (Transmission Control Protocol) 是Internet 最基本的网络通信协议, 它由一系列协议组成,其中核心协议是传输层的TCP和UDP( User Datagram Protocol, 用户数据报协议)协议。TCP 协议属于“ 面向连接,可靠传输”的类型, 面向连接的传输意味着在进行通信以前, 需要在两个系统之间建立逻辑连接, 在每个数据传输的过程中都需要进行应答以保证数据包的完整, 这种方法可以保证数据传输的可靠性,但所需的网络开销较大;UDP 协议属于“ 面向无连接, 不可靠传输”的类型, 该协议只负责接收和传送上层协议传递的消息, 它本身不做任何的检测、修改与应答, 网络开销一般要小于TCP协议。在优良的网络环境, UDP 的工作效率较TCP 协议要高。在Windows 环境下开发网络应用程序, 通常都是使用Microsoft的网络编程接口, 即Windows 套接字Windows Socket( 简称Winsock), 它包含在Winsock.dll 中的一组API 中,用于在网络上传输数据和交换信息, 编程人员需要熟悉和掌握相关的网络协议、系统的底层知识以及网络软硬件技术, 因而Winsock 编程相当复杂。所幸的是, MFC的CSocket类对WinSock 进行了有效的封装, 并不需要直接与Winsock 的API 打交道, 调用CSocket类的一些方法成员,就可以方便进行机器之间的通讯,使得对Winsock 的访问大大简化。1.1 网络聊天工具的特性(1)多功能。作为一种即时通信工具,一般聊天工具支持显示朋友在线、寻呼、聊天、即时传送文字、语音和文件等功能,支持视频功能的视频QQ。(2)超时空。通过互联网,信息传递摆脱了时空的限制,只要交流双方是与网络相连通的,不管对方身在何处,双方都可以进行即时对话。这种散点式的人际传播对于整个组织机构的健康运作有着不可低估的作用。(3)互动性。网络聊天接近于现实生活的最大量交流,是一种面对面的共时态的直接交流。它可以进行实时的一对一、一对多、多对多的互动交流,实时地对对方做出反应。可以通过留言,即使对方不在线,也可以在上线的同时第一时间收到信息。网络聊天工具还可以与移动通讯终端、IP 电话网、无线寻呼等多种通讯方式相连,是一种方便、实用、高效的即时通信工具。(4)平等性。网络世界的虚拟性、平等性以及网络信息传递的瞬时性,满足了大学生轻松交往的要求。正是这些特性,可以使大学生暂时掩盖自身任何的缺点和不足,可以摆脱现实交往中容易产生的各种矛盾,更不必顾及舆论的压力而使得师生在交流过程中受到更少的束缚,最终使大学生在虚拟的网络中能够更轻松地面对友(爱)情,交往需求在网络中得到充分的满足。(5)距离感。网络的距离掩盖了真实的缺点,容易产生美感。心理学家分析,距离可以使人产生朦胧,朦胧为想象提供了足够的空间,想象则可以产生美感。1.2 完成的功能本次毕业设计从实际工程应用角度出发,以计算机网络原理为指导,结合当前网络中的一些常用技术,编程实现基于TCP/IP的网络聊天工具,该聊天工具具有聊天室聊天、广播聊天、二人私聊以及文件传输功能的聊天工具网上聊天1.0版。2系统分析2.1 需求分析通过调查研究,要求系统满足有以下功能;7) 由于操作人员的计算机知识普遍较差,要求有良好的人机界面。8) 客户端操作,用户登录,进入聊天室。9) 实现广播聊天、聊天室聊天、二人私聊、文件传输四个功能。10) 服务端操作,显示所有在线用户,选择某用户后可以进行删除操作11) 系统退出。12) 系统要体现界面友好,使用方便的特性。2.2 技术分析2.2.1 Socket 编程的相关知识与技术Socket 进行网络通信有两种主要的方式。第一种为流方式(Stream Socket), 也称面向连接方式, 用于实现TCP 协议。在这种方式下, 两个应用程序之间先要建立一种虚拟的连接。只有两端的程序成功地进行了握手之后才能开始传输数据。其特点是通信可靠, 对数据有校验和重发的机制, 通常用作数据文件的传输, 如FTP、TELNET等。第二种为数据报文方式(Datagram Socket),又称无连接方式, 在进行数据传送以前两端的程序不需要任何沟通。数据报文方式由于取消了重发校验机制,能够达到较高的通信速率, 可以用作对数据可靠性要求不高的通信, 如实时的语音、图像转送、广播消息等。面向连接的Socket工作中有比较严格的操作次序。在这种类型的Socket 工作过程中,必须首先启动服务器端,通过调用socket()函数建立一个socket 对象, 然后调用bind()函数将该socket对象和本地网络地址绑定到一起,再调用listen()函数使该socket对象处于侦听状态,并规定它的最大请求的数量;之后要直等到客户机有连接请求的时候服务器才会再次被激活;收到客户机请求以后, 服务器调用accept()函数来决定是否接受该连接; 客户在建立Socket 对象后就可调用connect()函数和服务器建立连接; 连接一旦建立, 客户机和服务器之间就可以通过调用基本的网络I/O 函数来发送和接收数据; 一旦数据传送结束, 双方都必须关闭初始创建的socket 对象。在网络通信中, 由于网络拥挤或一次发送的数据量过大等原因, 经常会发生交换的数据在短时间内不能传送完、收发数据的函数不能返回的现象, 这种现象叫阻塞。Winsock 对有可能发生阻塞的函数提供了两种处理方式阻塞和非阻塞方式。在阻塞方式下, 收发数据的函数在被调用后一直要到传送完毕或者出错才能返回。阻塞方式是UNIX 中Socket 工作的默认方式, 可是在Windows 系统中这种方式是无法容忍的。在Windows 系统中, 如果一个函数长时间没有返回值, 系统就很难为其他的程序分配出运行时间, 常见的现象就是对输入没有响应, 刷屏缓慢, 系统反应迟钝等。因此, 在编程时, 应尽量使用非阻塞方式。2.2.2 TCP/IP协议介绍TCP/IP协议并不完全符合OSI的七层参考模型。传统的开放式系统互连参考模型,是一种通信协议的7层抽象的参考模型,其中每一层执行某一特定任务。该模型的目的是使各种硬件在相同的层次上相互通信。这7层是:物理层、数据链路层、网路层、传输层、话路层、表示层和应用层。而TCP/IP通讯协议采用了4层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。这4层分别为: 应用层:应用程序间沟通的层,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等。 传输层:在此层中,它提供了节点间的数据传送服务,如传输控制协议(TCP)、用户数据报协议(UDP)等,TCP和UDP给数据包加入传输数据并把它传输到下一层中,这一层负责传送数据,并且确定数据已被送达并接收。 互连网络层:负责提供基本的数据封包传送功能,让每一块数据包都能够到达目的主机(但不检查是否被正确接收),如网际协议(IP)。 网络接口层:对实际的网络媒体的管理,定义如何使用实际网络(如Ethernet、Serial Line等)来传送数据。2.2.3 程序语言的选择本系统采用VC+.NET 2003作为程序开发语言。VC+是Windows平台上的C+编程环境,学习VC要了解很多Windows平台的特性并且还要掌握MFC、ATL、COM等的知识,难度比较大。Windows下编程需要了解Windows的消息机制以及回调(callback)函数的原理;MFC是Win32API的包装类,需要理解文档视图类的结构,窗口类的结构,消息流向等等;COM是代码共享的二进制标准,需要掌握其基本原理等等。 VC作为一个主流的开发平台一直深受编程爱好者的喜爱,但是很多人却对它的入门感到难于上青天,究其原因主要是大家对他错误
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 屋面施工临边防护安全管理措施
- 2025年上海合伙买房协议书
- 2025年内科疾病诊断与治疗模拟考试卷答案及解析
- 大跨度结构施工安全防护措施
- 2025年蔬菜供货合同协议书
- 2025年骨科骨折固定器材选择与使用答案及解析
- 2025年康复医学康复评定与制定计划测验答案及解析
- 2025年眼科常见疾病筛查与护理知识考试卷答案及解析
- 2025年眼科玻璃体手术操作规范性考核模拟测验卷答案及解析
- 2025年皮肤科学皮肤病诊治技能模拟考试答案及解析
- 大学班助培训
- 子公司设立管理制度
- 阿氏圆教学课件
- 陇南市成县县属国有企业招聘笔试真题2024
- 环保行业成本管理制度
- 内蒙古自治区“十五五”农牧业发展计划
- 中等职业学校幼儿保育专业《婴幼儿行为观察与引导》课程标准
- (2025)事业单位考试(面试)试题与答案
- 沈阳地铁入职笔试题目及答案
- 产后耻骨护理
- 杜甫草堂介绍
评论
0/150
提交评论