基于TCPIP的网络聊天工具设计Word文档格式.docx
《基于TCPIP的网络聊天工具设计Word文档格式.docx》由会员分享,可在线阅读,更多相关《基于TCPIP的网络聊天工具设计Word文档格式.docx(18页珍藏版)》请在冰豆网上搜索。
![基于TCPIP的网络聊天工具设计Word文档格式.docx](https://file1.bdocx.com/fileroot1/2022-10/28/a7c92862-4d91-4033-a013-50b2c82476c4/a7c92862-4d91-4033-a013-50b2c82476c41.gif)
第一章引言
1.1聊天系统的研究现状
在高速发展的信息时代,人们有众多的通讯手段[1]。
比如电话、手机、邮箱等。
每个工具都存在不完善的地方,比如邮箱存在实时性的问题,手机、电话等在通信的过程中不能实现一对多的聊天。
因此为了填补这个漏洞,开发出网络聊天工具是至关重要的。
如今网络聊天工具的发展也逐渐形成规模,它不仅价格便宜、通讯迅速,且能同时与多位好友进行在线聊天。
近几年来,网络聊天工具有了更为广阔的市场和前景。
据科学统计,截止2009年,在网络聊天工具的使用方面,全球已经达到十亿的用户量,账号的申请量为25亿,我国在该方面的使用数据也在不断增长,截止2013年,我国的使用量为4.68亿,其年增长率为12.7%[2]。
网络聊天工具在广域网上具有较为成熟的技术,在开发的过程中,会调用多种协议,但是使用的核心协议是TCP协议或UDP协议。
比如国外产品ICQ、MSN、Yahoo通等,国内产品QQ、飞信、新浪UC等。
在使用方面,这些工具都各具特色,除了聊天功能,都存在一些增值功能。
但是这些产品的开发过程是作为商业机密处理,因此对其编程机制等是很难了解到的。
不过从宏观的角度出发,聊天工具之间能够通信都是因为有通信接口的存在,且在开发过程中,调用TCP/IP协议实现相应的功能。
而相比来说,局域网的功能实现难度较低,且其存在的网络结构并不是很复杂,因此讨论局域网的聊天工具也是具有一定的研究价值。
1.2聊天系统的开发目标
本次设计主要是建立在MFC封装下的CSocket网络编程以及TCP/IP协议的基础上,实现局域网内的多人在线聊天。
该系统是以QQ群为开发模型。
在该方案中,是以VisualC++6.0为开发平台,利用MFC类库,结合套接字的形式,并以对话框的形式进行输入和显示,最终实现了通过服务器中转的文字聊天。
在客户端功能模块设计中,存在注册模块、登陆模块、私聊模块、群聊模块以及收发离线消息的模块。
1.3聊天系统的开发意义
该聊天系统主要是为了保证在局域网环境下,多位用户之间能够有一个共同的平台进行在线聊天,并且能够选择特定好友进行私聊。
虽然该系统消耗的系统资源较少,使用简单的网络结构,但是它可以为企业提供一种安全、快速、有效的通信平台,局域网也不会因为聊天系统间的工作增加过多的负荷,且其存在的各种通信需求能够得到相应的处理。
在具体实现中,企业无需对局域网硬件做出任何改动,就可以使用局域网聊天系统带来的通信机制。
局域网聊天系统的开发实例有多种,其中以Socket套接字作为网络编程接口来开发局域网聊天软件是最为广泛的应用方式,能够处理传统通信中遗留下来的通信问题,并不断适应新型的网络应用[3]。
例如在企业内部,套接字通信原理可以很好的应用在教育、娱乐、通信等方面。
且采用套接字原理通信的方式在信息的发送和接收方面有较快的速度,在网络带宽方面占用较少的资源,在服务器的吞吐能力方面存在较低的值,能够在最大程度上保证通信的信息安全。
1.4论文的主要内容
本次聊天系统设计的重点是通信功能。
在功能方面,主要是保证用户可以注册号码,登陆界面,进行私聊、群聊,并且能够发送和接收离线消息。
在窗口方面,采用卡通人物进行界面美观,保证系统的人性化设计。
下面将对各章节内容进行综述。
第1章是对本系统的研究现状、开发的意义等进行了深入的阐述。
第2章是介绍在开发过程中所运用到的相关技术。
例如TCP/IP协议、Socket编程技术,MFC类库、客户端/服务器模式等[4]。
第3章是系统的总体设计。
将对系统的设计流程进行一定程度的分析,绘制出系统的总体功能结构图,并对程序代码中使用到的函数类及成员函数进行介绍。
第4章主要是对系统的各个部分设计进行分析。
第5章介绍系统测试。
主要是保证系统能够正常运行,并实现预期设定的功能[5]。
第二章开发工具和关键技术
2.1开发工具
根据系统的用户需求以及总体的设计思路,为了能够在最大程度上发挥系统的性能,同时也为了能够在一定程度上实现系统的高可移植性,需要选择一个适当、有效的开发工具。
本次设计整体以VisualC++6.0为开发平台,该平台是一个非常强大且完善的程序开发环境,存在众多辅助开发工具。
比如编译器、向导类等。
它是一个以Windows操作系统作为平台基础的集成环境[6]。
在系统开发的过程中,使用了MFC封装下的CSocket套接字进行编程。
该方式可以在很大程度上降低网络编程的难度。
2.2TCP/IP协议
TCP/IP也被称作传输控制协议/网际协议,作为网络互连的核心协议,受到广泛的应用。
该协议类型作为开放性的标准应用在各种计算机中,在一定程度上保证系统间通信的正常运行。
在计算机网络中,TCP/IP协议将对网络地址进行统一分配,保证每台计算机系统都存在独特的地址。
TCP/IP协议不仅仅只有TCP和IP协议,它包括一百多个协议,其中属于核心协议的是传输层协议、物理接口层以及网络层协议[7]。
其他协议也在网络中发挥各自的作用,如ICMP协议。
TCP和UDP协议作为核心协议,自然存在其优势的地方。
TCP也称作传输控制协议,主要是传输数据流[8]。
它是通过面向连接的方式,使用校验、确认信息等形式实现数据的传输。
因此该协议具有一定的可靠性。
在具体的功能实现中,主要是利用三次握手和滑动窗口的机制来控制流量,从而保证传输的可靠性。
相比之下,用户数据包协议UDP属于不可靠协议。
在传输数据的过程中,不能保证信息的正确传输,即时传输失败,也不会向对方发送通知。
这是一项简单的传输层协议,因此UDP协议的数据包包头的字节数较少,存在较少的负载。
在实际的网络编程中,用户是通过操作系统核外的应用程序进行编程[9]。
编程的核心是套接字的运用。
2.3客户机/服务器模式
客户机/服务器方式是用户和编程者都很熟知的网络结构,在TCP/IP环境下,主要是运用该模式进行网络编程。
它主要是对网络程序的一种运行方式进行描述,能够实现网络用户间的相互沟通。
在该模式下,计算机系统的硬件环境能够很好的发挥其长处,并保证客户端以及服务器都有适当的任务,将原有的通讯开销降至一定水平。
客户端和服务器是通过主动请示达到发送消息的目的。
客户端首先是向服务器发送请求消息,并等待响应结果。
而服务器会对用户端的信息做出判断和应答。
在具体的操作过程中,先启动服务器。
服务器通过消息响应函数完成一系列操作。
具体过程如下:
第一,服务器首先创建套接字,打开与客户端通信的渠道。
表示服务器处于愿意接受数据的状态;
第二,服务器创建监听套接字,侦听客户端的请求消息[10];
第三,对接收到的数据做出消息响应,向客户端发送消息处理结果或是将数据存储到缓冲区中。
第四,回到第二个步骤,继续进行监听动作。
第五,关闭服务器。
在整个过程中,客户端主要进行以下几个操作:
第一,将与服务器通信的端口打开,并成功连接到服务器;
第二,将请求内容通过套接字端口发送给服务器,并等待服务器发回的处理消息。
第三,客户端在结束与服务器的通信后,要关闭通信端口。
客户端与服务器的工作关系图如图2-1所示[11]。
图2-1客户端/服务器通信结构示意图
2.4套接字网络编程
2.4.1套接字简介
Socket又称作套接字,从基本概念上分析,它主要包含IP地址以及Port端口号。
在一定协议条件下,只要利用Socket套接字就可以实现计算机系统间的信息发送和接收。
换句话说,即两个应用程序可以通过套接字进行相互连接。
在客户机/服务器模式中,为了实现简单的网络编程,微软公司在90年代与其他家公司配合制定出一套通用的套接字规范,用于Winsock网络编程。
在使用Winsock网络编程过程中,会结合多项协议。
而其中应用最广泛的是TCP/IP协议。
应用进程间的相互通信主要是利用Winsock规范中的API,为了更进一步降低网络编程的难度,将Winsock实现具体功能的API进行封装,形成MFCSocket。
编程过程中调用的是MFC封装后的套接字类,如CSocket[12]。
如今网络开发应用中最为广泛使用的应用程序接口就是Socket接口,在实际的操作系统调用以及通信协议实现功能中,主要是采用图2-2的层级关系。
图2-2套接字实现通信的层级关系图
2.4.2TCP套接字的应用
本次设计的聊天室主要是运用TCP套接字来实现信息传输,TCP协议是采用面向连接的方式[13]。
因此在C/S模式下,要保证服务器与客户端连接后,才能进行信息传输。
在双方通信的过程中,服务器采用以下几个步骤来使用套接字接口:
第一,使用Socket()函数创建服务器端通信的套接口,如果没有成功创建套接字端口,就无法继续执行;
第二,将服务器的地址与所创建的套接口进行结合的过程中,要使用Bind()函数完成[14]。
该函数不仅确定本地的IP地址,还能绑定Port端口号。
如果采用Create()函数进行,前两步将并为一步。
即不采用Bind()函数;
第三,服务器