计算机网络客户服务器模式与套接字_第1页
计算机网络客户服务器模式与套接字_第2页
计算机网络客户服务器模式与套接字_第3页
计算机网络客户服务器模式与套接字_第4页
计算机网络客户服务器模式与套接字_第5页
已阅读5页,还剩58页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、互联网运用方式和API客户效力器任务方式 运用程序接口API1.客户效力器任务方式C/S的根本概念C/S关系与软件特点C/S任务过程与并发协议端口号2.C/S方式部分的重点与难点1、C/S方式的根本概念2、C/S的任务过程,以及C/S软件的各自特点3、*协议端口号及运用4、插口地址概念重点了解:主要了解:1、熟知的协议端口号与运用2、互联网C/S任务方式与TCP/IP的关系3、效力器并发处置3.相互作用的客户-效力器 Client/Server)模型 在TCP/IP互联网中,进程间相互访问的方式主要是客户效力器交互方式客户和效力器分别是两个运用程序进程。客户向效力器发出效力恳求,效力器做出呼应

2、。效力器客户互联网进程Process)就是运转中的程序。处理详细运用问题的逻辑处置和通讯进程总称为“运用进程。4.为什么选择客户-效力器方式第一个缘由:互联网中资源、运算才干和信息不均等的现实。资源、运算才干不均:小到一个物理网络,往往是某些主机拥有大容量的外存,某些主机只需很少外存或没有外存,有些主机拥有打印机,有些主机没有;大到整个互联网,少数网点拥有超速运算才干,而大量网点由PC机构成.信息分布不均:比如名字信息、地址信息等。这些信息往往以数据库方式存在于少数特权主机当中,供部分或全局访问。这些信息普通具有公用性,为了节约整个网络的资源,没有必要在每一台机器上都维持一个拷贝。不均等景象不

3、可防止,而客户-效力器方式表达了这种景象并很好地顺应了这种景象。5.第二个缘由:是技术性的。 互联网进程通讯与单机进程通讯不同:互联网通讯完全是异步的,无法知道哪个主时机在何时发起通讯。 因此,需求一种机制,为预备通讯的进程之间建立联络,为两者的数据交换提供同步。 C/S方式是客观现实与技术实现相结合的产物!首先,什么是早期单机运用软件的任务方式?和早期单机运用软件普通只和本机资源交互,包括通讯串/并口。当出现网络运用后,运用软件需求经过网络访问资源、交互信息,寻觅一种基于网络的信息交互/计算分布方式。6.网络中计算机进程间通讯同样存在主叫和被叫,但没有振铃机制。通讯进程间收/发协调怎样办?互

4、联网采用最简单的商定方式C/S方式通讯的呼叫方式:主叫发起通讯、被叫振铃和提机、开场通讯。振铃机制实现依赖信令系统控制处置,协调双方通讯收/发矛盾。在网络环境下,许多问题的处理往往是经过位于不同主机中的多个进程之间的通讯和协同任务来完成的。网络的进程之间怎样相互协同开场任务,为什么要C/S方式?7.2000年前后,SIP协议的开展类似信令系统的互联网会话呼叫系统,可定义更丰富的会话方式。传统TCP/IP网络运用程序运用客户/效力器方式,但C/S不是一切运用交互会话方式,如IP、视频会议、多方游戏等。在客户-效力器方式中,每次通讯均由客户进程发起,效力器进程从开机起就处于等待形状。这可保证效力器

5、随时对客户恳求做出呼应8.C/S方式是商定客户恳求发起通讯、效力器呼应通讯提供特定的效力,根本可以了解为恳求/应对的分布计算会话方式。互联网将网络软件分为客户(client) 、效力器(server) ,客户和效力器都指通讯中所涉及的两个运用进程。即本质是计算机软件。9.客户软件的特点 在进展通讯时暂时成为客户,但它也可在本地进展其他的计算,提供用户端根本运用功能框架。被用户调用,在用户本地计算机上运转,在需求时自动向远地效力器发起通讯。可与多个效力器进展通讯。通常不需求特殊的硬件和很复杂的操作系统。 10.效力器软件的特点 专门用来提供某种效力的程序,可同时处置多个远地或本地客户的恳求。在共

6、享计算机上运转。当系统启动时即自动调用并不断不断地运转着。被动等待并接受来自多个客户的通讯恳求。普通需求强大的硬件和高级的操作系统支持。11.两个术语在C/S方式中:效力器:被动等待通讯的程序。不是计算机。效力器级计算机:运转效力器软件的功能强大的计算机。硬件厂商把具有高速CPU、大容量存储器、功能强大的操作系统的计算机称为效力器,其实应该称为效力器级计算机。12.数据链路层物理层运输层网络层数据链路层物理层运输层网络层 发起衔接建立恳求运用层运用层客户效力器因特网 接受衔接接受恳求计算机A计算机B1 C/S 任务建立过程恳求、应对、数据交互,TCP/IP系统支持。C/S都需求TCP/IP系统

7、支持C/S 任务过程和并发13.C/S方式的传输机制面向衔接传输:运用面向衔接的传输协议时,两个运用必需首先建立一个衔接,然后在该衔接上发送数据。无衔接传输:运用可以利用无衔接接口在任何时间向任何目的发送音讯。客户和效力器在通讯时,既可以运用面向衔接传输协议,又可以运用无衔接传输协议。当运用面向衔接传输时,客户需求首先构成一个到特定效力器的衔接,该衔接在客户发送恳求和接纳呼应的过程中坚持不变。当客户完成对效力的运用时,必需封锁这一衔接。14.一台计算机上可以运转多种效力器:1. 充分利用硬件资源。硬件可以被多种效力所共享。减少系统管理负载。由于这种情况可以减少被管理 的计算机系统的数量。假设对

8、效力的需求比较低,那么把效力器合并到一台 计算机上可以显著地减少开销,而且并不会明显地降低性能。15.2 效力器多重效力:单计算机可安装多效力器软件来提供多重效力,在等待的时候不占用资源,但同时呼应需求系统较多资源支持数据链路层物理层运输层网络层数据链路层物理层运输层网络层数据链路层物理层运输层网络层运用层运用层运用层计算机A计算机B计算机C客户1效力器1效力器2客户2因特网16.并发性 客户-效力器交互模型的根底并发效力器可以同时为多个客户提供效力,并不需求每个客户等待前一个客户的恳求完成大多数并发效力器都是动态操作的。即只需当恳求到达时,效力器才会动态地为到来的恳求创建一个新的线程。效力器

9、程序由两部分组成:主线程和效力线程。主线程:担任接纳恳求并为恳求创建一个效力线程来处置恳求。并使效力器坚持活泼形状,主线程在创建处置恳求的效力线程之后,会等待另一个恳求的到来。效力线程:担任处置每个恳求,然后终止。假设N个客户同时恳求一台计算机上的给定效力,那么会有N+1个线程提供效力。主线程等待额外的恳求,N个效力线程与每个客户进展交互在互联网中,客户发起恳求完全是随机的,很有能够出现多个恳求同时到达效力器的情况。17.数据链路层物理层运输层网络层数据链路层物理层运输层网络层数据链路层物理层运输层网络层运用层运用层运用层计算机A计算机B计算机C客户1因特网客户23 效力器并发:效力器1*副本

10、一个效力器同时呼应多个恳求,即效力器并发执行是根本的,而不是逐个呼应。一个效力器软件包括:接纳恳求、处置单个恳求和生成新线程三部分;当恳求到达时,效力器将它交给一个控制线程副本,和已有线程并发。效力器118.复杂的C/S交互:实践大型网络运用S软件系统中,C/S的交互能够是复杂的过程。1、客户运用不限制访问一个效力器,客户一个运用可以成为多个不同效力器能够不同计算机上的客户,要处置多个效力器通讯。2、提供某种效力的效力器同时能成为另一个效力的客户,如文件效力器在进展文件效力处置时需求记录时间,能够又要访问时间效力器。3、能够发生效力器的循环依懒,在两个效力器间,或多效力器之间的依懒环。19.数

11、据链路层物理层运输层网络层数据链路层物理层运输层网络层N个效力器因特网计算机A计算机BN个客户协议端口号C与S之间怎样准确识别特定效力?20.一台运转多种效力器的计算机上,每种效力器如何识别发给本人的恳求?处理方法: 传输协议为每种效力分配一个独一的标识符,效力器和客户必需运用这一标识符。效力器开场运转时,它向本地协议软件注册它运用的效力标识符。客户访问远程效力器时,需求指定对应的效力标识符。客户计算机上的传输协议软件在发送恳求时,向效力器计算机发送这一标识符,效力器计算机上的传输协议软件运用这一标识符决议处置这一恳求的效力器程序。21.端口端口就是运输层效力访问点 TSAP端口的作用就是让运

12、用层的各种运用进程都能将其数据经过端口向下交付给运输层,以及让运输层知道该当将其报文段中的数据向上经过端口交付给运用层相应的进程。从这个意义上讲,端口是用来标志运用层的进程。效力器经过它明确所提供的效力22.FTPTELNETSMTPDNSTFTPSNMP TCP UDP2123255369161运用层传输层端口层23.102823.源端口目的端口TELNETB目的端口号=23把包发送到我的TELNET运用中AB24.端口 端口用一个 16 bit 端口号进展标志。端口号只具有本地意义,即端口号只是为了标志本计算机运用层中的各进程。在因特网中不同计算机的一样端口号是没有联络的。25.两类端口

13、一类是熟知端口,其数值普通为 01023。当一种新的运用程序出现时,必需为它指派一个熟知端口。另一类那么是普通端口,用来随时分配给恳求通讯的客户进程。 26.TCP/IP定义的运用程序熟知端口:FTP: 21, Telnet: 23, SMTP: 25,DNS: 53, TFTP:69, : 80, SNMP: 161,协议端口号定义而普通端口,是可以由系统开发人员随时定义分配的。27.名称TCP端口号TCP端口号描述EchoDiscardDaytimeChargenTime7913193779131937服务器返回客户发送的所有内容服务器丢弃客户发送的所有内容服务器以可读形式返回日期与时间当

14、客户发一个数据报时,服务器发送一连续字符流,直至客户中断连接;UDP发一随机长度的数据报从服务器返回一个32bit数,表示UTC时间1900 .1.1午夜至今的秒数通常TCP/IP的主要端口号:1225之间,端口号2561023由Unix系统占用,端口号10245000作为暂时端口分配,5000以上作为其他效力器不常出现。规范简单效力端口号28.为什么效力器端口号一定是独一定义的,而客户端的端口号可以是按定义的,也可以暂时自指定的,只具有本地意义? 为什么效力器端口号一定是独一定义的,而客户端的端口号可以是按定义的,也可以暂时指定的?答:协议端口号处理是C/S交互过程中效力器定位问题,使一切客

15、户都能正确找到需求的效力,所以效力器端口一定独一确定的,而客户源端口号只对客户本人有效。一计算机可以有多个运用进程,经过不同的端口号源不同/目的一样,源同/目的不同,均不同,同时进展多义务处置,此时TCP/UDP、IP完成复用与分用。 协议端口号处理是C/S交互过程中效力器定位问题,使一切客户都能正确找到需求的效力,所以效力器端口一定独一确定的,而客户源端口号只对客户本人有效。29.实践经过TCP运用,除端口外,还必需有IP地址。 TCP衔接的两个端点端与端通讯,是由端点地址IP地址,端口号确定, IP地址,端口号也被称为插口Socket,或者端地址Endpoint Address。实践经过T

16、CP通讯,除端口外,为什么必需有IP地址?30.TCP/UDP协议插口0 4 10 16 31 源端口 目的端口 TCP/UDP头部 数据其它字段 TCP/UDP头部 数据 IP头部32bit源地址 32bit目的地址其它字段从IP包构造看,网络运用进程通讯需求端地址IP地址,端口号31.总结1、什么是C/S任务方式? 2、网络运用为什么需求C/S方式?3、 为什么通常效力器软件复杂?4、运用进程通讯端口地址,为什么还要IP地址?能否需求物理网地址?32. 作业1、客户软件和效力器软件主要特点。2、一个效力器软件通常需求包括哪些主要的功能部分。3、为什么通常效力器端口号是独一定义的,而客户端的

17、端口号可以暂时指定? 33.运用程序接口API1 运用程序接口概述2 套接字API根本构造3 实现套接字API的过程4 套接字API的其它问题5 套接字API实现实例34.1、运用编程接口的概念与重要性2、套接字API的特点/函数/参数3、Socket套接字API实现的根本过程重点了解:主要了解:1、套接字API主要过程的作用2、套接字承继与效力器并发35.运用程序接口概述C/S方式处理了运用程序经过互联网交互方式等待/恳求,并经过端口号来标识效力器提供的某种效力。虽然TCP/IP 并不复杂,但运用程序编写当然不希望每次逐一填写TCP/IP的各个报头;运用程序对网络低层通讯细节实践不想关怀,所

18、以在运用程序和通讯网络之间怎样构成规范的接口API,运用程序只需求经过API就能完成通讯和数据交互,是网络运用开展的一大提高。互联网运用程序怎样和TCP/IP协议通讯接口?即C、S编程怎样运用TCP/IP协议进展通讯与数据交互。传统经过网络DDN、FR、ATM的交互,运用计算机串行接口或LAN仿真,通讯网把数据传送到对方计算机,其他需求计算机运用途置。1 网络编程接口开展背景存在问题:1、计算机运用和网络两层皮;2、计算机运用必需和底层硬件接口打交道;严重妨碍网络运用开展。36.数据链路层物理层运输层网络层数据链路层物理层运输层网络层N个效力器因特网计算机A计算机BN个客户运用进程经过端地址建

19、立可靠双工通讯衔接和收发数据,运用程序或编程人员怎样处置各种协议TCP/IP/IGMP的详细报格式?需求逐一包文内容填写?37.实践互联网运用程序只需求经过API完成通讯和数据交互的调用,从而不需求处置网络的细节,是网络运用开展的一大提高。API表达了现代网络又一个重要思想运用程序与网络“一体又“分别。一体:把网络通讯对上笼统API成为计算机体系组成部分,网络API定义与设计已成为一切处置网络运用与网络通讯底层接口的实践方法,在3G/4G,NGN网络中最大规范组就是处理其API的问题。分别:实现高效、简捷API,就意味着实现运用与网络通讯底层“分别,就可不关怀通讯实现的细节,大大降低了网络运用

20、开发难度,促进运用开展。38.运用程序接口API是运用程序经过TCP/IP协议软件进展通讯交互的接口,它是一组定义的操作非硬件,API决议了网络运用所能到达功能和这些功能编程开发的难度。运用程序接口API是普通由操作系统或编程系统提供,是由运用程序调用的一个过程及过程所需的参数。通常一个API根本操作是独立过程,如API一个过程完成建立通讯,另一个过程完成数据接纳。运用程序接口API概念API:Application Program Interface,运用程序接口或运用编程接口39.通讯协议只是规定协议应该提供的操作,并不指定运用程序与协议进展交互时的API。协议端口与API接口有什么区别?

21、协议端口是效力器软件的标识,16位整数;API是一个执行过程。40.套接字APISocket API互联网API主要有两类:1、伯克利版APISocket API,称为套接字API,从BSD Unix版开展而来。2、A&AT版TLI 运输层接口 Transport Lay Interface虽然互联网允许OS系统选择API,但目前WindowsWinSoc、Unix、Linux主流OS系统广泛接受套接字API,所以成为现实上规范。套接字API是操作系统的一个组成部分。41.Socket API:运用程序与TCP/IP协议之间的接口,它作为一种通用的通讯编程接口而设计。42.Socket是运用层

22、与TCP/IP协议族通讯的中间软件笼统层,它是一组接口。在设计方式中,Socket其实就是一个门面方式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。43.套接字API的根本构造套接字API是Unix操作系统的开展而来的,套接字API网络通讯描画根本坚持Unix对设备、文件的操作风格。如 Unix文件操作采用“openreadwriteclose过程方式,首先产生一个操作的描画符,然后每个过程由函数+参数详细组成。套接字API同样用描画符的方法,在运用通讯协议前必需恳求操作系统生成一个套接字,系统前往一个

23、小整型数如3、5作为描画符来识别这个套接字,以后通讯过程中这个套接字作为参数,而不用每次传输时指明细节。44.API过程中运用程序选择的端口、通讯地址、客户或效力器、运用协议等怎样表达呢?套接字API经过定义多个函数而不是单个,为什么?,来确定参数和选项;既当创建套接字描画符后,调用多个函数过程阐明套接字运用的详细细节。总结:套接字API的运用是经过首先创建套接字前往整型描画符,然后调用多个包含详细参数和选项的函数过程,完成运用程序和协议通讯的接口。为什么是多个而不是单个,单个绝对不行吗?45.实现套接字API的过程Socket过程 该过程创建一个套接字并前往一个整数描画字。 descript

24、or=socket( protofamily, type, protocol)close过程 该过程通知系统终止对套接字的运用。 close( socket)bind过程 效力器运用该过程来提供效力器所运用的、用于等待衔接的协议端口号。 bind( socket, localaddr, addrlen)46.listen过程 效力器调用该过程来等待来自客户的衔接。 listen( socket, queuesize)accept过程 面向衔接的效力器必需调用accept过程才干接纳下一个衔接恳求。 newsock=accept( socket, caddress, caddresslen)co

25、nnect过程 客户调用该过程建立与特定效力器之间的衔接。 connect( socket, saddress, saddresslen)47.send过程 假设套接字被衔接,可以利用该过程发送数据。 send( socket, data, length, flags)sendto过程 和sendmsg 过程 允许客户或效力器运用无衔接套接字发送数据。 sendto( socket, data, length, flags, destaddress, addresslen) sendmsg( socket, msgstruct, flags)是一个构造,该构造包含了关于目的地址,目的地址的长度

26、,发送的音讯,以及音讯的长度等信息。48.recv过程 运用可以调用该过程从衔接套接字中接纳数据。 recv( socket, buffer, length, flags)recvfrom过程 和recvmsg过程 假设套接字并没有被衔接,运用可以用于接纳来自恣意发送者的音讯 recvfrom( socket, buffer, length, flags, sndraddr, saddrlen) recvmsg( socket, msgstruct, flags)是一个构造,该构造含有接纳音讯的地址和发送者的IP地址。49.实现套接字API的过程1、创建一个套接字并前往一个前往整型描画符 De

27、scriAptor=socket(pf,type,protocol)Pf:协议栈TCP/IP/Apple Talk,type:衔接/无衔接, protocol:详细协议tcp/udp2、Bind过程 Bind(socket,locaaddr,addrlen)效力器运用Bind过程赋予套接字特定的端地址,实现socket 和端地址联编,运用无衔接协议时已预备好接纳信息。 Locaaddr是本地端地址的普通socket地址描画构造,TCP/IP地址和协议端口号将按socket地址构造表达。50.4、Listen过程 Listen(socket,queuesize)如效力器是面向衔接的,需求运用Li

28、sten 过程将套接字设置为被动方式,然后必需接受一个衔接恳求。Queuesize:客户恳求队列的长度,开场为空。3、Close过程 close (socket)close过程的调用通知系统终止对一个套接字socket的运用,系统对套接字进展释放,运用程序与传输协议间停顿数据交互。假设套接字在运用面向衔接的传输时,在封锁套接字前先封锁衔接。51.5、Accept过程 newsock=accept(caddress,caddresslen)运用面向衔接通讯时, Accept过程在套接字中确定了衔接客户的地址,效力器经过调用Accept过程接受下一个衔接。然后Accept为该衔接创建一个新套接字n

29、ewsock 前往调用者,效力器将用这个新套接字和客户通讯,直至与该客户通讯终了。caddress:按照socket地址构造表达的客户端IP地址。4-5步骤是面向衔接通讯时效力器必需的过程调用,完成被动地接受一个衔接恳求,然后创建一个效力器与特定客户TCP衔接的新的套接字,依次通讯,同时原套接字仍坚持不变;当该客户衔接终了后,运用原套接字接受来自下一个客户的衔接。52.6、客户端Connect过程 Connect(socket,saddress,saddresslen)当运用面向衔接的TCP, Connect过程启动一个指定效力器的运输层衔接,本质上说Connect是客户与曾经调用了Accep

30、t过程的效力器进展衔接的过程。 saddress是按普通socket地址构造表达的效力器IP地址和协议端口号。 非常有意思的是,当客户运用无衔接的UDP协议时,也可以运用 Connect过程,此时并不启动一个衔接,而仅仅使得 socket与效力器端地址联编。通常对无衔接的传输普通每一个IP报指明目的地址,但许多运用客户只和一个效力器通讯,也即具有同样的端目的地址。此时客户可以经过套接字的地址记录,发送多条信息,而不用每条指明地址。无衔接传输的Connect过程调用,建立延续无地址的IP包传输,实践上了解为客户 程序不需求给API指明端地址,而运用API默许地址。53.7、Send过程 send

31、(socket,data,length,flags)当套接字衔接建立后, 客户与效力器就需求发送信息,客户与效力器运用Send 过程完成数据发送。data 是内存待发数据的地址,length是数据字节数 , flags 特殊选项位常用于系统调试。 sendto(socket,data,length,flags,destaddress,addresslen) sendto过程是客户或效力器在未衔接时发送信息, destaddress 是目的地址的socket构造表达。 sendmgs(socket,mgsstrucct,flags) sendmgs过程完全同sendto,但定义构造简化参数表达,

32、 mgsstrucct是包括目的地址、地址长度,待发信息位置和信息长度的构造表达详细不展开。允许客户或效力器运用无衔接套接字发送数据。54.8、Recv过程 recv(socket,buffer,length,flags)当套接字衔接建立后, 客户与效力器也同样需求接纳信息,客户与效力器运用Recv过程完成从一个衔接的套接字中接纳数据。buffer 是内存中存放接纳到的数据的地址,length是缓冲区大小,flags 控制细节选项。 recvfrom(socket,buffer,length,flags,sndraddr,saddrlen) recvfrom过程是客户或效力器在未衔接时接纳任一

33、客户发来的信息,同时对应每收到的信息前往发送地址作为应对,sndraddr是发送地址的socket构造表达。 recvmgs(socket,mgsstrucct,flags) recvmgs过程完全同recvfrom ,简化参数的表达,并和 sendmgs过程对应。mgsstrucct是一个构造,该构造含有接纳音讯的地址和发送者的IP地址。55.其他套接子过程:1.getpeername过程:效力器在调用accept过程接纳衔接恳求之后,可以调用该过程,以获得启动衔接的远程客户的完好地址。2.gethostname过程:客户或效力器可以调用该过程来获取运转该程序的计算机的信息。3.gethos

34、tbyname过程:经过计算机名字前往该计算机的IP地址。客户经常运用该过程将用户输入的名字转换成相应的协议软件所需的IP地址。4.gethostbyaddr过程:给出一台计算机的IP地址,它将前往该计算机的名字。当要向人们显示主机信息时,客户或效力器就可以运用该过程。 write(socket, buffer,length) read (socket, buffer,length)套接字API承继Unix的I/O普通操作,对已建立衔接的套接字,可经过write-read套接字进展网络数据传输,其功能同send-recv过程。56.客户-效力器方式的socket实现框架效力器Socket( )bind( )listen( )accept( )阻塞,等待客户衔接恳求recv( )处置效力恳求send( )Socket( )connect( )send( )recv( )客户建立衔接效力恳求效力呼应面向衔接的客户-效力器效力器必需首先启动,直到它执行完accept()调用,进入等待形状后,方能接受客户恳求。假设客户先启动,那么connect()将前往出错代码,衔接不胜利。效力器 端地址联编创建套接字等待衔接恳求, 恳求队列长度客户地址新套接字建立衔接效力器端地址获取IP地址与定义端口57.套接字、并发与线程套接字API设计需求顺应效力器并发,当效力器并发创

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论