| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 网络协议 -> 基于TCP/IP的网络聊天系统 -> 正文阅读 |
|
[网络协议]基于TCP/IP的网络聊天系统 |
基于TCP/IP的网络聊天系统 摘要:TCP/IP(Transmission Control Protocol)的简写,中文为传输控制协议/因特网互联协议,又叫网络通讯协议,这个协议是Internet最基本的协议,就是由网络层IP协议和传输层的TCP协议组成的。TCP/IP是供已连接因特网的计算机进行通信的通信协,是传输控制协议/网际协议。它定义了电子设备如何连入因特网,以及数据如何在它们之间传输的标准,是互联网中的基本通信语言或协议。它在计算机网络中发挥了重要的作用,本次TCP/IP课程设计实现了基于TCP的客户/服务器通信程序,具体实验过程通过有连接服务为主体,无连接服务为辅并利用事件对象I/O管理来实现。 关键字:TCP/IP I/O管理 套接字 Visual C++6.0 1 工程概况 1.1研究背景 在高速发展的信息时代,人们有众多的通讯手段中。比如电话、手机、邮箱等。每个工具都存在不完善的地方,比如邮箱存在实时性的问题,手机、电话等在通信的过程中不能实现一-对多的聊天。因此为了填补这个漏洞,开发出网络聊天工具是至关重要的。如今网络聊天工具的发展也逐渐形成规模,它不仅价格便宜、通讯迅速,且能同时与多位好友进行在线聊天。近几年来,网络聊天工具有了更为广阔的市场和前景。据科学统计,截止2009年,在网络聊天工具的使用方面,全球已经达到十亿的用户量,账号的申请量为25亿,我国在该方面的使用数据也在不断增长,截止2013年,我国的使用量为4. 68亿,其年增长率12. 7%。 网络聊天工具在广域网上具有较为成熟的技术,在开发的过程中,会调用多种协议,但是使用的核心协议是TCP协议或UDP协议。比如国外产品ICQ、MSN、Yahoo通等,国内产品QQ、飞信、新浪UC等。在使用方面,这些工具都各具特色,除了聊天功能,都存在--些增值功能。但是这些产品的开发过程是作为商业机密处理,因此对其编程机制等是很难了解到的。不过从宏观的角度出发,聊天工具之间能够通信都是因为有通信接口的存在,且在开发过程中,调用TCP/IP协议实现相应的功能。而相比来说,局域网的功能实现难度较低,且其存在的网络结构并不是很复杂,因此讨论局域网的聊天工具也是具有一定的研究价值。 1.2开发目标 TCP(Transmission?Control?Protocol)和UDP(User?Datagram?Protocol)协议属于传输层协议。TCP提供IP环境下的数据可靠传输,它提供的服务包括数据流传送、可靠性、有效流控、全双工操作和多路复用。通过面向连接、端到端和可靠的数据包发送。而UDP则不为IP提供可靠性、流控或差错恢复功能。TCP对应的是可靠性要求高的应用,而UDP对应的则是可靠性要求低、传输经济的应用。本次设计主要是建立在MFC封装下的CSocket网络编程以及TCP/IP 协议的基础上,实现局域网内的多人在线聊天。该系统是以QQ群为开发模型。在该方案中,是以Visual C++ 6.0为开发平台,利用MFC类库,结合套接字的形式, 并以对话框的形式进行输入和显示,最终实现了通过服务器中转的文字聊天。在客户端功能模块设计中,存在注册模块、登陆模块、私聊模块、群聊模块以及收发离线消息的模块。 1.3开发意义 该聊天系统主要是为了保证在局域网环境下,多位用户之间能够有一个共同的平台进行在线聊天,并且能够选择特定好友进行私聊。虽然该系统消耗的系统资源较少,使用简单的网络结构,但是它可以为企业提供一种安全、快速、有效的通信平台,局域网也不会因为聊天系统间的工作增加过多的负荷,且其存在的各种通信需求能够得到相应的处理。在具体实现中,企业无需对局域网硬件做出任何改动,就可以使用局域网聊天系统带来的通信机制。 局域网聊天系统的开发实例有多种,其中以Socket套接字作为网络编程接口来开发局域网聊天软件是最为广泛的应用方式,能够处理传统通信中遗留下来的通信问题,并不断适应新型的网络应用中。例如在企业内部,套接字通信原理可以很好的应用在教育、娱乐、通信等方面。且采用套接字原理通信的方式在信息的发送和接收方面有较快的速度,在网络带宽方面占用较少的资源,在服务器的吞吐能力方面存在较低的值,能够在最大程度上保证通信的信息安全。 1.4 论文的设计方法和内容 (1)客户端的设计: 本地客户端的主要功能是:接收远程服务器转发的消息并显示消息。 本地服务端的主要功能是:发送建立TCP/IP的连接请求操作,并且发送注册信息,登陆消息及退出请求,也可以发送群聊消息,私聊消息以及统计在线聊天人数。 (2)服务器端设计: 远程服务端的主要功能是:监听客户端的连接请求,提供注册服务,验证登陆请求,查看在线人数,发送在线状态,发送群聊消息及私聊消息。 本次聊天系统设计的重点是通信功能。在功能方面,主要是保证用户可以注册号码,登陆界面,进行私聊、群聊,并且能够发送和接收离线消息。在窗口方面,采用卡通人物进行界面美观,保证系统的人性化设计。 2 开发工具和关键技术 2.1开发工具 根据系统的用户需求以及总体的设计思路,为了能够在最大程度上发挥系统的性能,同时也为了能够在一定程度上实现系统的高可移植性,需要选择-一个适当、有效的开发工具。本次设计整体以Visual C++6. 0为开发平台,该平台是一个非常强大且完善的程序开发环境,存在众多辅助开发工具。比如编译器、向导类等。[1]它是一个以Windows操作系统作为平台基础的集成环境。在系统开发的过程中,使用了MFC封装下的CSocket套接字进行编程。该方式可以在很大程度上降低网络编程的难度。 2.2 TCP/IP协议 TCP/IP也被称作传输控制协议/网际协议,作为网络互连的核心协议,受到广泛的应用。该协议类型作为开放性的标准应用在各种计算机中,在一定程度上保证系统间通信的正常运行。在计算机网络中,TCP/IP 协议将对网络地址进行统一分配,保证每台计算机系统都存在独特的地址。TCP/IP协议不仅仅只有TCP和IP协议,它包括一百多个协议,其中属于核心协议的是传输层协议、物理接口层以及网络层协议”。其他协议也在网络中发挥各自的作用,如ICMP 协议。[2] TCP和UDP协议作为核心协议,自然存在其优势的地方。 TCP也称作传输控制协议,主要是传输数据流。它是通过面向连接的方式,使用校验、确认信息等形式实现数据的传输。因此该协议具有一定的可靠性。在具体的功能实现中,主要是利用三次握手和滑动窗口的机制来控制流量,从而保证传输的可靠性。相比之下,用户数据包协议UDP属于不可靠协议。在传输数据的过程中,不能保证信息的正确传输,即时传输失败,也不会向对方发送通知。 这是一项简单的传输层协议,因此UDP协议的数据包包头的字节数较少,存在较少的负载。在实际的网络编程中,用户是通过操作系统核外的应用程序进行编程间。编程的核心是套接字的运用。 2.3客户机/服务器模式 客户机/服务器方式是用户和编程者都很熟知的网络结构,在TCP/IP环境下,主要是运用该模式进行网络编程。它主要是对网络程序的一种运行方式进行描述,能够实现网络用户间的相互沟通。在该模式下,计算机系统的硬件环境能够很好的发挥其长处,并保证客户端以及服务器都有适当的任务,将原有的通讯开销降至一定水平。客户端和服务器是通过主动请示达到发送消息的目的。客户端首先是向服务器发送请求消息,并等待响应结果。而服务器会对用户端的信息做出判断和应答。 在具体的操作过程中,先启动服务器。服务器通过消息响应函数完成一系列操作。具体过程如下:第一,服务器首先创建套接字,打开与客户端通信的渠道。表示服务器处于愿意接受数据的状态;第二,服务器创建监听套接字,侦听客户端的请求消息0;第三,对接收到的数据做出消息响应,向客户端发送消息处理结果或是将数据存储到缓冲区中。第四,回到第二个步骤,继续进行监听动作。第五,关闭服务器。在整个过程中,客户端主要进行以下几个操作:第一,将与服务器通信的端口打开,并成功连接到服务器;第二,将请求内容通过套接字端口发送给服务器,并等待服务器发回的处理消息。第三,客户端在结束与服务器的通信后,要关闭通信端口。客户端与服务器的工作关系图如图2-1所示 2.4套接字网络编程 2.4.1套接字简介 Socket又称作套接字,从基本概念_上分析,它主要包含IP 地址以及Port端口号。在一定协议条件下,只要利用Socket套接字[3]就可以实现计算机系统间的信息发送和接收。换句话说,即两个应用程序可以通过套接字进行相互连接。 在客户机/服务器模式中,为了实现简单的网络编程,微软公司在90年代与其他家公司配合制定出一套通用的套接字规范,用于Winsock 网络编程。在使用Winsock网络编程过程中,会结合多项协议。而其中应用最广泛的是TCP/IP 协议。应用进程间的相互通信主要是利用Winsock规范中的API,为了更进一步降低网络编程的难度,将Winsock实现具体功能的API进行封装,形成MFC Socket。 编程过程中调用的是MFC封装后的套接字类,如CSocket12。如今网络开发应用中最为广泛使用的应用程序接口就是Socket接口,在实际的操作系统调用以及通信协议实现功能中,主要是采用图2-2的层级关系。 2.4.2?TCP套接字的应用 本次设计的聊天室主要是运用TCP套接字来实现信息传输,TCP协议是采用面向连接的方式13。因此在C/S模式[4]下,要保证服务器与客户端连接后,才能进行信息传输。在双方通信的过程中,服务器采用以下几个步骤来使用套接字接口:第一,使用Socket ()函数创建服务器端通信的套接口,如果没有成功创建套接字端口,就无法继续执行;第二,将服务器的地址与所创建的套接口进行结合的过程中,要使用Bind ()函数完成4。该函数不仅确定本地的IP 地址,还能绑定Port端口号。如果采用Create ()函数进行,前两步将并为一步。即不采用Bind ()函数;第三,服务器利用Listen ()来侦听请求消息,并打开通道准备接收;第四,当客户端发来信息后,服务器调用Accept ()函数,并新创建一个套接字,来重载Revc ()函数,从而达到接受数据的目的;第五,服务器如果要发送应答消息给客户端,主要采用Send ()函数;第六,最后停止套接口的使用,即调用CloseSocket ()。 在这个过程中,客户端主要进行以下的步骤:第一,通过Create ()函数,在客户端创建一个套接字;第二,客户端与服务器的连接通过Connect()函数来实现;第三,实现连接后,使用Send ()函数发送消息。或者是加载Recv ()函数接收消息;第四,使用CloseSocket ()停止套接字接口的使用。整体的TCP 套接字运用流程如图2-3所示。 |
|
网络协议 最新文章 |
使用Easyswoole 搭建简单的Websoket服务 |
常见的数据通信方式有哪些? |
Openssl 1024bit RSA算法---公私钥获取和处 |
HTTPS协议的密钥交换流程 |
《小白WEB安全入门》03. 漏洞篇 |
HttpRunner4.x 安装与使用 |
2021-07-04 |
手写RPC学习笔记 |
K8S高可用版本部署 |
mySQL计算IP地址范围 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 11:31:58- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |