




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第一章绪论1.1选题意义21世纪是信息网络,新型通信方式的出现,让人们单调的生活变得多彩。以往传统的通信方式,比如电话,电报等,在如今这个信息飞速传递的时代,逐渐暴露出了其成本过高,方式单一的弊端。随着网络技术的快速发展,即时网络通信器应运而生,它的出现取代了以往费事费力的通信方式,使人们的交流变得更加方便快捷,更有利于人们在这个网络信息飞速传递的时代即时掌握了解最新的消息情况(赵梵志,陈瑾萱,2022)。相较于即时网络通信器,传统的通信方式存在以下缺点:(1)信息传递成本过高,以前常见的几种比较传统的通信方式如电报,电话等,相较于现代通信技术而言其传递成本过高。作为用户来说,信息传递的开销是其选择信息传递方式的一个很重要的标准(周凯文,孙紫薇,2023)。从中得以观察到消息传递的成本过高的话,可能会使消费者望而却步,不到不必要的时候不会选择去发电报或者打电话等,也不利于人们的生活。(2)信息传递方式单一,传统的通信方式电话,只能听到对方的声音;电报,传真只能看到对方的文字,都不能真实的感受到对方想要表达的意思,缺少真切的体验感。这样的传递方式可能会导致传递者的完整意思不能被很好的接收理解,会导致接收者与传递者之间产生误解,对于消息的传递和人际关系的维护不是很好(张云飞,刘思彤,2021)。(3)传递信息数量有限,由于传统通信方式比较笨重的传递方式方法的限制,每次传递的内容信息数量有限,单次不能传递大量的信息。要想传递完整的信息,就得需要多次传送,从中可以分析出会导致花费更多的人力物力,同时接收者不能一次就完全接收全部信息,因此可能会由于单次信息传递的不完整,而导致产生一些意料之外的矛盾误会,同样也是不利于人们的生活(林浩宇,陈梓萱,2020)。对于设计的合理性,本文将通过其最终成效来加以证明,并融合实际应用范例、专家评判及长期跟踪评价数据等多层面信息,进行全方位验证。文章将详细阐述设计在解决具体问题中的表现与成果,通过对比不同情境下的应用效果,来评估其有效性及可行性。同时,本文也将结合专家评判意见与长期跟踪数据,对设计的持续优化提出有益建议,旨在为相关领域的发展贡献更为科学和可信的参考。新兴的网络通讯的优点:(1)成本低,在现在这个网络技术飞速发展的时代,人不需要再像以前那样通过写信、发电报来传递信息,现在几乎人手一部手机,单凭手机就可以完成打电话,视频,文件传输等事务,并且不需要再额外的花费,从这些结果可以推测出完全改变了以前只有在必要的时候才决定传递信息的情况,极大的便利了人们的生活(罗文昊,高雅婷,2021)。(2)方便快捷,随着社会的进步,人们的生活条件得到很大的改善,手机电脑在生活中已经得到了普及,它们都可以很方便的连接网络,成为了一种新的信息载体。大家通过微信、QQ等聊天软件,可以随时随地,按照当前背景随心所欲的跟朋友家人聊天,这让远隔天涯的家人朋友也能像是在身边一样。这种方式的出现,让人们之间的关系变得更加密切。(3)能进行大量的信息传输,和传统的传递方式相比,网络信息传输的数据量成倍增长,短时间内可以进行大量信息传输,完全避免了以前传递信息有限的状况,在此特定条件下大大的减少了因信息传递不完全而带来的麻烦误会,并且随着科技的进步,这种优势将会持续扩大,不仅仅会使人们的日常交流生活更加方便,对国家而言也会极大的提高社会的发展速度(梁俊杰,郭婧琪,2019)。以前的电话、电报,不仅费时费力,还有各种各样可预见的和不可预见的麻烦。现如今的即时网络通信,完全改变了这一现象,消息传递更多更快,更省时省力花费又少,极大的便利了人民的生活,国家社会也因此可以以一种更高更快更强的姿态飞速发展(陆思远,何雨欣,2022)。由此可见,在这种情况影响下即时网络通信的发展对社会国家和人民的生活都有很大的影响,其发展前景十分广阔。对于即将毕业进入社会的大学生来说,这次设计也是一个将所学联系实际的很好的锻炼的机会。1.2即时网络通信国内研究现状在当前这个时代,网络通信软件得到了人们的青睐,它们的出现使传统的通信方式发生了改变,便利了人们的生活,密切了人们的联系,慢慢的成了生活中的一个重要的部分(蒋志豪,谢婉婷,2023)。国内目前比较受欢迎的QQ、微信等软件,这使人们的生活变得更舒适,然而,随着网络技术进步,人们逐渐对网络变得依赖。这些比较常见的聊天软件,大大方便了人们平常的交流,已经逐渐融入到了人们的生活之中,得到了人们的认可。并且这些软件不断完善变得更加成熟。目前,在此框架范围内在国内的即时通讯市场上,最受人们青睐的两个应用是QQ和微信(蔡嘉伟,赵雅琳,2020)。经过相关部门的调查统计,根据他们的调查结果得知,在2016年网民最常用的APP排行榜中,微信排在第一位,QQ排在第二位。同时数据显示,阿里旺旺、易信等在即时通信软件领域,也开创出了一片自己的天地。1.3即时网络通信国外研究现状经最近的调查研究显示,现在国外即时通讯市场上,较为常见的应用有:WhatsAPP、Line、Skype等。在中国、韩国和日本,市场上都存在着各种各样的即时聊天应用,并且无一例外的是这些应用都拥有庞大的用户人数,更有甚者在其本国即时聊天应用领域占据主导地位。在这种环境作用下在大多数欧洲即时通讯市场,WhatsApp占据主导地位(余天俊,孙梦琪,2021)。不过,Facebook最近把WhatsApp给收购了。在欧洲大部分的通讯市场上,WhatsAPP都受到了很大的关注。这次的交易,给Facebook带来了很大一批国际用户,也给Facebook进军全球即时通讯市场提供了很大帮助(程浩宇,李欣怡,2019)。但是在亚洲的通讯市场上,情况就变得更加复杂。在韩国,KakaoTalk的活跃用户占iPhone用户的88%;在日本,有44%的iPhone活跃用户在使用NHN的Line应用(丁俊杰,陈思涵,2022)。在国内,在此背景下考虑问题腾讯微信应用的用户数达到2亿。如果美国人使用即时通讯应用程序的人数较少,而短信用户数量较多,那么美国人可能不知道WhatsApp是一个广受欢迎,并且拥有大量用户的即时通讯应用程序。在Onavo样本中,不仅仅是韩国、中国还有俄罗斯,大多数国家使用Facebook的数量超过美国(郑思远,魏雨菲,2023)。上述发现与本研究构建的理论框架紧密相符,这在一定程度上验证了本研究路径的正确性和价值。该理论框架为整个研究提供了坚实的理论基础,而结论与其的一致性不仅彰显了研究方法的精确性,也证明了研究预设在实际应用中的有效性。通过对相关数据的细致收集和深入分析,本研究在特定领域内提出了新颖的看法,为同行学者及实践工作者提供了有益的参考和启示。此外,结论的稳健性得益于科学的研究规划和严格的研究处理步骤,对后续研究具有一定的参考价值。网络技术在不断地发展,各种各样的计算机应用都受到了人们的极大追捧,随着人们对其的研究变得更加深入,近几年出现的人工智能就是计算机网络深入发展的证明。由此可见,计算机网络技术的研究将会是未来的重点。不仅如此,在未来网络编程将会应用在各个不同的领域之中,所以学习网络编程技术对于我们大学生来说将变得尤为重要(马天宇,张婉清,2020)。第二章开发环境的概述2.1开发系统VisualC++6.0是由Microsoft研发的可视化集成工具。在这个软件中,有一个强大的MFC库,这是它的优势之一。MFC中有许多类和函数,可以为许多窗口程序提供所需的类和函数。正是因为有了它的存在,从中得以观察到使得编程工作被大大简化,原本复杂繁琐的编程工作,现在轻而易举就能完成(黄嘉豪,李梦洁,2021)。C/S模型就是客户机/服务器模型。想要使它正常运行,需要客户机和服务器端的共同配合(张浩然,刘雅琪,2019)。客户机下载客户的程序,服务器下载服务器软件。从中可以分析出当客户机需要连接服务器时,先把自己的数据情况,向服务器端报告,完成之后,再提出连接申请,服务器看的申请后,根据情况,给出相应的回答,这样就能实现用户之间的连接通信。2.2开发工具VisualC++6.0,他不光是一个C++编译器,同时它也是一个可视化集成开发环境。它是基于Windows系统的开发工具,由好几个部分组成。编辑器、调试器和其他的开发工具共同来完成开发任务(陈嘉宇,王秀婷,2022)。VisualC++主要包含了三大模块:1.DeveloperStudio,一个集成开发环境,能协助我们完成很多日常工作。又因为它的标题是MicrosoftVisualC++,这就让很多人误认为它就是VisualC++。但事实上,事实并非如此。尽管DeveloperStudio为我们的日常工作提供了优秀的编辑器和许多Wizard,但是,从这些结果可以推测出连接和编辑的工作,它无法完成。编辑和连接程序的功能与其他软件一起完成(赵志远,徐思涵,2023)。DeveloperStudio不仅适用于VC,还适用于VB、VJ、Vid和其他visualStudio软件。2.MFC。理论上,MFC是相同的。它不单单只能用于Visualc++,其它的软件也能处理MFC。同样的话,用VisualC++来写代码,也不是非得要用MFC,根据个人意愿,DK程序或其它同样也可以用VisualC++来完成,这个是没有限制的。只不过VisualC++本身就是为MFC而专门制作的,它有很多的功能也是专门为了MFC设计的。所以,要是使用VisualC++进行编程,但是没有选择用MFC的话,那就相当于抛弃了VisualC++中的很多的功能(王俊杰,孙雅琳,2020)。3.PlatformSDK,所有VisualC++的本质和灵魂都在其中。总体而言,编译器MicrosoftC/C++,是应用程序PlatformSDK的核心,它与MASM以及其他文档和辅助工具一起使用。按照当前背景前面提到的DeveloperStudio,其实不能进行编译程序。编译程序实际上,是靠CL和NMAKE来实现的。这些程序和各种各样我们看不到的程序,统一为一个整体,共同构成了VisualStudio的基石。第三章关键技术3.1TCP/IP协议从表面上看,我们通常认为TCP/IP意味着两个完全不相关的协议:TCP和IP。并且呢,在实际的某些情况下,它就这意味着是两项协议。但是呢,在大多数情况下,TCP/IP仅表示用于通过IP发送消息的协议组的通用名称。比较详细的说的话IP或ICMP、TCP或UDP、Telnet或FTP以及HTTP是TCP/IP协议。它们与TCP或IP有很多相似的地方,并且它们共同存在,构成了互联网。因为TCP/IP这个词通常指这些协议,所以有时我们称之为TCP/IP互联网协议(李浩宇,陈雨琪,2021)。TCP/IP协议设计用于Internet,在此特定条件下是专门定制开发的一种协议族,如果你想通过互联网进行通信,就必须要遵循这个网络协议。所以,TCP/IP是一种基于Internet的协议。如图所示(周嘉伟,高雅琳,2019):图3.1.1TCP/IP协议图TCP协议是一种面向连接的协议,这意味着在用户连接到用户之前必须安装数据通道,就像我们平时打电话,首先要做的就是拨号,等待对方听到。在数据相互传输之前,所有的数据都是同步的,等对方接收导数据,得到答案后,我们就可以继续工作,像我们通常说的那样,握手(吴思远,郭婧怡,2022)。在这种情况影响下由于TCP协议采用这种连接方式,所以,当网络状况不是很好是,TCP连接是可靠的,虽然传输的速度较慢,但是却能很好的保证传输数据的正确性(徐志豪,谢梦琪,2023)。同时,本文深切意识到,跨学科合作是科学创新与技术进步的重要驱动力,其实现并非易事。它要求各学科的研究人员与学者不仅需拥有扎实的专业素养与宽泛的学术视角,还需具备开放包容的心态与合作的热忱,敢于打破学科壁垒,共同探索未知领域。另外,为确保跨学科合作的顺畅推进与高效执行,还需构建一套科学的合作体系与平台,为参与者提供资源支持、信息交流与协调沟通渠道。TCP连接的建立,客户端和服务器端要完成各自的任务,两端互相发送信息,多次确认,才能完成连接的建立。它们之间来回发送三个包,来确认连接的建立,我们一般把这个配合过程叫作TCP协议的三次握手。在Socket程序中,此过程通过客户端运行Connect。下面来看看三次握手的流程图:图3.1.2TCP协议三次握手图第一次握手:客户端将SYN标记的位置设置为1,然后创建一个随机的seq=j值,然后将数据包发送到服务器,发送后客户端将转换为SYN_SENT状态,等待服务器确认信号(孙嘉伟,赵雨琳,2020)。第二次握手:当数据包到达服务器端时,SYN=1标记位将客户端的通信请求传递到服务器端,然后将服务器上的SNY和ACC索引设置为1,ack=J+1,然后创建随机参数seq=K,生成数据包,在此框架范围内然后将新数据包发送回去,由此来确认连接的请求。之后,服务器将调整到SYN_RCVD状态(许浩宇,李婉婷,2021)。第三次握手:当服务器端发回来的数据包,被客户端收到后,先看看ack是不是J+1,ACK是不是1,都是的话,就会把标志位ACK设置为1,ack=K+1,再把数据包发送回服务器端。服务器端收到数据包就会开始检查,ack是不是K+1,ACK是不是1,都对的话,那么就会建立起连接,客户端和服务器终端将进入Established状态,这意味着完成三次握手,然后可以进行数据传输(韩天俊,陈思琪,2019)。第四个挥手就表示TCP连接断开,在这种环境作用下也就是客户端必须向服务器端发送四个包才能确认TCP连接断开。在Socket程序中,任何一方都可以运行此过程来执行Close。由于TCP连接是双向连接的原因,所以在关闭的时候,需要进行单独关闭。就意味着,一方完成数据传输后,发送FIN断开与另一方的连接,这表明该方向将不再有数据传输,但可以将数据发送到TCP通信,直到另一方发出终止FIN的信号。在这个过程中,发送信号的第一方自动关闭,另一方会被动断开链接(曹嘉豪,张雨菲,2022)。四次挥手的具体过程:图3.1.3TCP协议第四次挥手图无论是客户端,还是服务器端,都可以中断连接。第一次挥手:在需要断开与服务器端的连接时,客户端会发送FIN=M的关闭信号,然后设置成FIN_WAIT_1状态。在此背景下考虑问题这意味着客户端已经没有要传输的数据,但是服务器上有可以在不关闭连接的情况下发送的数据(陈子轩,李雨萱,2020)。第二次挥手:在服务器收到FIN信号的时候,会把ack=M+1信号发送回客户端,就是向客户端说明,已经收到了请求,但是还有没发完的数据,让客户端等一下。当客户端收到这个消息后就会进入FIN_WAIT_2的状态,等待服务器发送FIN。这些新的认识或补充资料极大地增强了本文对研究对象本质及其规律的认知深度,让本文对其内在运作机制有了更为全面且透彻的理解,并为后续的科学探索、技术创新、政策规划或教育实践等领域开拓了新的探索领域。它们为科研人员提供了新的思考路径,激发了多样的研究热情与方向,促进了相关领域的蓬勃发展。同时,这些新认识也为实践者提供了更为具体且实用的操作指南,帮助他们更好地解决实际问题,实现了理论与实践的有机结合。第三次挥手:当服务器端上的所有数据全部完成发送,随着就会发送FIN的关闭信号。这就说明,服务器能断开连接了。从中得以观察到发送完成后,它就会进入LAST_ACK状态(林子俊,张婉如,2021)。第四次挥手:服务器端发出的关闭信号到达客户端后,客户端经过解析校对,它就知道服务器端要关闭了,但是为了保险一点,客户端还是会向服务器端发送ack=N+1,然后进入TIME_WAIT状态。从中可以分析出服务器端收到这个之后,就会断开连接。客户端在发送完之后,等待2MSL后也没有被回复,就说明服务器端已经关闭了。那么客户端也就会正常关闭了。直到客户端关闭,就算是完成了四次握手(罗嘉豪,赵雅静,2019)。通过上面的说明可以看出,发送信号的第一方自动关闭,另一方会被动关闭,同时,在实践中也存在同时关闭的可能性,具体的情况,如下图所示:图3.1.4TCP协议第四次挥手的特殊情况图3.2网络层中的IP协议IP通常分为三个主要模块:IP寻址、路由(从第一个节点到最后一个节点)和IP分包与组包。根据IP地址前四位进行划分,可以分成A类、B类、C类和D类四个不同级别的IP地址。A类IP地址的第一位数字为“0”。它的网络ID从第一位到第八位。~是它的类别的范围,以十进制表示。主机ID是它的最后24位。因此,在一个网段中可以容纳16777214个A类地址。B类IP地址的前两位为“10”。它的网络ID是从第一位第十六位。~.0是它的类别范围,以十进制表示。主机ID是最后16位ID。因此,一个网段中可以容纳65534个B类地址。C类IP地址的前三位数字为“110”。它的网络ID是从第一位到第二十四位。~是它的类别范围,以十进制表示。主机ID是最后一个8位数字。因此,在一个网段中可以容纳254个C类地址。D类IP地址的前四位数字为“1110”。其网络ID从第一位到第三十二位。~55这是它的类别范围,以十进制表示。由于D类网络地址没有主机ID,因此通常用于多播(陆志远,孙雨晴,2022)。在分配IP地址时,主机标识不能全部为0或者1,这是需要注意的一点。当主机标识全部为0时,就意味着,在此特定条件下无法获取当前的网络地址或IP地址;当所有主机标识全为1时,通常被认为是一个广播地址。所以,再分配主机标识的过程中,应该把这两个特殊情况排除在外(蒋文昊,高雅琳,2023)。C类地址最多只有254(2^8-2=254)个主机地址也是因为这个原因。3.3流式接口在软件工程中,面对象API的实现方式就是流式接口,通过这个方法能提供更可读的源代码。这个方法最早是在2005年EricEvans与MartinFowler提出来的。典型的例子是C++型调用(蔡思远,郭婧雅,2020)。当需要转发一系列上下文调用(Context)时,通常用瀑布调用(方法链式调用)。早在1970年,Smalltalk就引入了瀑布法。这个一般说的是:(1)通过被调方法的返回值定义(2)自引用,新的上下文与于老的上下文所代表的含义相同(3)返回一个空的上下文来终止\t"/item/%E6%B5%81%E5%BC%8F%E6%8E%A5%E5%8F%A3/_blank"C++的\t"/item/%E6%B5%81%E5%BC%8F%E6%8E%A5%E5%8F%A3/_blank"iostream流式调用就是一个典型的例子。API无障碍访问的重点之一是可读性,命名和代码的编写是值得注意的。通过对代码复杂性的增加,来获得对API的无障碍访问也是一种方法(余俊杰,陈梦琪,2021)。可是,在此框架范围内要是附有正确的设计,流畅的API可探测性就很高,这就会提高代码的可读性。也可以通过线程接口中的引用调用线程。要允许引用方法,必须遵守规则:此方法必须返回到非void值。3.4socket()函数对于指定的地址族、数据类型和协议,我们一般会用socket()函数来给其指定一个套接口描述字和它所需要使用的资源。对于一个特定的套接口,给它使用一个给定的地址族,那么这个套接口就只能支持这一种协议。但是,可以将地址组指定为未声明(AFSEUUnspec),在这种情况下,必须指定协议参数(程对轩,李欣妍,2019)。协议号定义为进行通信的“通信区域”。创建一个\t"/item/socket%28%29/_blank"套接口()。#include<王俊杰,孙雅琳/socket.h>intsocket(intaf,inttype,intprotocol);af:这是一个地址的描述。就只支持AF_INET格式。Type:指定套接字类型。描述用于描述新接口类型的接口类型,如TCP(sockthaustream)和UDP(sockdodgram)。在这种环境作用下典型的套接字类型有流式套接字、数据报式套接字、SOCK_RAW、SOCK_PACKET等等。本文成功地将各领域的知识与技术资源集结起来,共同应对科学难题,推动相关研究迈向新的高峰。借助跨学科的协同与合作,本文不仅集合了多样化的思考方式和策略,还实现了技术与理论的深度融合,为复杂科学问题的解决提供了创造性的方案。这种综合性的研究方法不仅加速了学科间的交叉融合,也为相关领域的理论创新和实践应用开辟了新方向。Protocol:用于指定接口的协议。如果调度员不想使用此协议,可以使用0。比较常见的协议有TCP、UD、TIPC等(丁嘉伟,魏雨欣,2022)。相应地,符合TCP传输协议、UDP传输协议、STCP传输协议、TIPC传输协议。图3.4.1socket通信模型图3.5bind()函数为了将本地地址与套接口绑定,所以提出了Bind()函数。此函数通常用于流式接口,通常放在connect()或调用listen()前。Socket接口被创建完成后,这个套接口就被存到了一个名字空间中,但是它没有命名。在这种情况下,Bind()函数返回到,绑定了本地地址的接口(郑天俊,张婉婷,2023)。在Internet地址组中,SOC的名称通常由多个部分组成。DGRAM类的STRAM和SUK接口通常由三个组件组成:主机地址、协议号(在很大程度上设置为UDP和TCP)和用于区分不同应用程序的端口号。如果应用程序对分配给它的地址不太感兴趣,可以将端口号设置为0,也可以为INADDR_ANY指定Internet地址。在INADDR_ANY地址段的Internet地址,有权使用任何网络接口,在许多不同的主机条件下可以简化程序(马嘉豪,刘雅琳,2020)。在此背景下考虑问题在遇到端口号是0的情况时,Windows将在1024到5000之间选择一个套接口,为每个不同的程序,通过这种操作来保证套接口可以被实现。想要知道被分配的地址,在绑定之后,可以用getsockname()来实现。但是使用getsockname()查到被分配的地址的前提是,套接口连接成功。3.6listen()函数通常情况下,一般会使用一个listen函数,使套接字处于侦听模式,侦听传入的连接请求。在TCP服务器编程中,使用活动连接套接字后的Listen函数变成一个连接接口,允许从其他进程接收请求,最后形成服务器进程。在使用listen函数前,需要先用bind函数绑定;之后再使用accpet函数。Listen函数的使用方法:(1)执行listen函数,套接字变成被动模式。(2)队列数目是有限的,当数量满了之后,客户端新的请求都会被拒绝,会有连接错误的提醒。(3)一个套接字每次只能执行一个listen,多余的将不会起作用。3.7epoll机制随着服务端的人数变多了之后,就会因为人数变多而导致资源不够用,I/O效率就会变得很低,在考虑使用EPOLL的时候,EPOLL是一个经过POLL修改的Linux内核,其目的是处理大量语法手稿,这是Linux独有的I/O功能,它有以下特点(黄子轩,王秀雅,2021):(1)EPOLL是Linux下SELECT/POLL的扩展版本,EPOLL是一组执行任务的函数,而不是与SELECT/POLL有本质区别的函数。(2)EPOLL通常会将用户感兴趣的事件,放到所以内核中的事件表中,通过这种方法来提高效率,从中得以观察到每次调用SELECT/POLL时,都需要重新输入文件清单集或事件集,工作量会大大增加,所以效率比较低(张嘉伟,赵雨欣,2019)。(3)EPOLL有两种主要的操作方式:水平触发器LT(水平触发器)和侧向下降ET(边缘触发器)。LT相对低效,它是一种Select/Poll工作方法,ET更有效,它是一种Epoll工作方法。服务端使用epoll的时候步骤如下(陈嘉俊,李婉如,2022):1调用epoll_create()函数,在linux内核之中,创建一个新的事件表。2在完成创建后,添加监听套字到事件表中。3主循环过程中,等待准备好的文件描述符集返回,从中可以分析出使用epoll_wait()函数。4分别处理不同的就绪事件,其中包含的事件有两类:连接申请和新消息。第四章即时网络通信器的设计4.1设计说明本项目是为了用C++实现一个带有服务器端和客户端,有即时网络通信的聊天对话框。这个聊天室主要有两个程序:(1)服务端:能够接受客户端连接,与其进行聊天对话,并且实现聊天消息的保留。服务端类需要支持(赵恩格,徐梦,2023):1)支持客户端的接入,使基本的聊天功能得以实现。2)启动服务,创建侦听端口,并等待客户端发送的连接请求。3)采用epoll机制来实现竞争,提高效率。4)客户端连接时,保存连接记录。5)客户端发送消息时,对相应消息进行保存。6)客户端在请求退出时,发送请求,删除相关的连接信息。(2)客户端:这是用户的操作端,从这些结果可以推测出用户可以根据自己的需求,在这个操作端上给服务器发送请求,连接服务器,同时,使用这个操作端的用户,也能收到服务器端发来的消息。客户端类需要支持(王嘉豪,孙雅静,2020):1.连接服务器。2.支持用户输入消息,发送给服务端。3.接受服务端发来的消息,并能将消息显示出来。4.退出连接。其中提到的服务器与客户端所构成的服务器/客户端模型,即最简单的C/S模型。其具体的工作流程如图:图4.1.1C/S模型4.2服务器端的设计4.2.1服务器端的介绍通信服务器(CommunicationServer)是为用户提供远程文件传输和访问远程系统或联机信息的专用系统。通信服务器可以根据自己的能力,提供合适的通讯通道,给需要被服务的用户们(李浩俊,陈雨琳,2021)。在研究探索中,本文注重细节的关注,对每一个核心议题都展开了严格的审查与核实工作,以保障研究结果的精确无误和值得信赖。从设计至分析,每一步都经过了周密的策划与细致的实施,力求最大程度地减少误差与偏差的影响。此外,本文还采用了多种技术和方法对研究成果进行交叉检验,以确保结论的稳固可靠和可复制性。这种严谨认真的研究态度和方法不仅增强了本文的学术地位,也为相关领域的研究设立了新的标杆。通信服务器可以给用户提供下面这些功能服务:(1)网关功能:运用相关协议和改变数据格式、信号的办法,实现客户端与服务器端的连接。(2)服务访问:远程用户通过拨号从其家庭或其他远程位置访问网络。(3)调制解调器:通信服务器会提供一套异步调制解调器,在此特定条件下让内部的用户可以进行,拨号访问远程系统、信息服务等操作(周山轩,高雅琪,2019)。(4)桥接器和路由器功能:实现局域网之间自动传送数据包的功能,跟远程的局域网之间,有一条专用的数据链路。(5)电子邮件服务器:它会自动连接到其他局域网或电子邮件邮局以收集和传输电子邮件。系统将定期调用,在这种情况影响下或在有足够的电子邮件输出时调用(吴嘉伟,郭婧怡,2022)。4.2.2服务器的代码结构服务端类的实现:Server.hServer.cpp服务端需要的接口:(1)init()初始化(2)Start()启动服务(3)Close()关闭服务每次主服务器检查和处理EPOLL中的就绪信息,包括新连接和消息。服务器按发生的顺序处理就绪事件,对新连接执行accept(),对接收的新消息执行addf(),对聊天执行sendbroadcastmessage()。默认的服务器IP地址//默认服务器端IP地址#defineSERVER_IP""//服务器端口号#defineSERVER_PORT88884.2.3服务器工作流程TCP服务端的常规通信步骤:(1)先调用socket()函数,来创建新的套接字。(2)然后调用bind()函数,再将这个新创建的套接字,在此框架范围内与本地地址进行绑定。(3)设置Listen()函数,为监听模式,监听用户发来的连接请求。(4)Accept()接收来自用户的请求,并使用新套接字进行响应。(5)对于到来的请求,用返回的套接字应答,Send()发送信息。(6)完成这次响应后,就再次进入到等待新用户请求的模式。(7)关闭这个已经配置完成的套接字口。4.3客户端的设计4.3.1客户端的介绍客户端(client)也可以称为用户终端,它是与服务器对应的程序,为客户端提供一些常见的服务。只有一些在本地运行的程序需要安装,剩余的程序都安装在了运行服务器的用户计算机上(徐嘉豪,谢梦琳,2023)。在这种环境作用下网络技术在不断的发展,常用的客户端直接就有了即时通讯软件、电子邮箱和其他相关的客户端程序。对于这些特定的客户端软件,服务器维护需要相应的程序。同时,为了保证应用程序的正常运行,需要在服务器和客户端服务器之间建立特殊的通信连接(孙谷,李雨琪,2020)。4.3.2客户端的代码结构客户端类的实现:Client.hClient.cpp客户端类实现需要的接口:(1)连接服务端connect()(2)退出连接close()(3)启动客户端Start()#ifndefCHATROOM_CLIENT_H#defineCHATROOM_CLIENT_H#include<string>#include"Common.h"usingnamespacestd;//用于连接到服务器、发送和接收消息的客户端类classClient{public://无参数构造函数Client();//连接服务器voidConnect();//断开连接voidClose();//启动客户端voidStart();4.3.3客户端的结构框架图客户端工作流程图4.3.4客户端的工作流程TCP客户端的常规通信步骤:1.使用socket()函数,创建一个新的套接口。2.使用connect()函数,完成客户端与服务端端的连接。3.跟服务器端进行通信,recv()先接受信息,send()再发送信息。5.数据信息的传递完成之后,用close()函数,关闭连接。第五章总结与展望从最开始收集资料,查找文献,经过长时间的不断摸索,解决遇到的种种问题,到现在完成这项任务(许嘉俊,张婉琪,2021)。这是个漫长曲折的过程,从中我了解并学习了很多关于软件开发的知识。在此背景下考虑问题在软件开发过程,我基本掌握了VC++的开发手段,在软件实现过程中,我可以认真思考、不断探索,在实际开发中改变新思路,改进了设计方案,提高了软件的效率和质量。在研究开发的过程中,我遇到了许多的问题,为了给这些问题找到合理的解决方案。我不断地去寻找各种各样的方法,搜集了大量的资料,最后成功的解决了困难(韩子轩,陈梦琳,2019)。经过这整个过程的学习,也锻炼了我面对困难问题时,从中得以观察到能冷静分析,积极去寻找各种对策来解决困难的能力,给我未来的生活工作,打下了良好的基础。同时,对我来说,让我的设计功能变得更加全面,工作效率更高,能让人们的生活因为我的设计变得更加美好,也就成为了我的长远目标。未来将会是科技网络的时代,我有理由相信在未来的生活中,人们会越来越离不开网络,从中可以分析出网络逐渐变得与人们的生活息息相关,已经变成了生活中很关键的一个环节,通过对全篇论文的研究学习,我感受到了网络科技的强大之处,因此我有理由认为,在不久的将来即时通信技术将会有更长足的发展进步,在国家人民生活中的地位将会变得更加重要。参考文献[1]赵梵志,陈瑾萱.局域网的即时通信软件设计与实现[J].中国新通信,2022,21(11):2.[2]周凯文,孙紫薇.基于iOS的融合通信系统的设计与实现[D].北京邮电大学,2023[3]
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度公司间产品研发保密协议
- 二零二五年度承揽合同增值税税率适用及税务咨询服务协议
- 二零二五年度住宅工程款拨付与竣工验收合同
- 二零二五年度城市集体合同-XX企业职工劳动条件与劳动法规执行监督协议
- 2025年度转租商铺合同:临街黄金地段商铺租赁协议
- 2025年度生鲜市场供应链整合服务合同协议
- 二零二五年度代课教师与教育机构期限服务协议
- 二零二五年度房屋租赁合同附带租户子女入学协议
- 二人成语四个字
- 现代语文教学的挑战与解决策略试题及答案
- 2024年江西交通职业技术学院单招职业技能测试题库及答案解析
- 《生物质热电联产工程设计规范》
- (高清版)DZT 0276.18-2015 岩石物理力学性质试验规程 第18部分:岩石单轴抗压强度试验
- 中铁快运股份有限公司2024年招聘笔试参考题库附带答案详解
- 护理中的病人隐私保护和信息安全
- 客诉案列分析报告
- 高校公寓管理总结汇报
- 人工智能的道德与伦理问
- 2024年安徽合肥轨道交通公司招聘笔试参考题库含答案解析
- 公司法务管理手册全部程序葵花宝典
- 白酒品牌茅台1935品牌社区行
评论
0/150
提交评论