版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、客户服务器模式与套接子1第1页,共64页,2022年,5月20日,1点7分,星期三第3.1节、客户服务器工作模式3.1.1 C/S的基本概念3.1.2 C/S关系与软件特点3.1.3 C/S工作过程与并发3.1.4 协议端口号谢希仁教材1.6 节2第2页,共64页,2022年,5月20日,1点7分,星期三C/S模式部分的重点与难点1、C/S模式的基本概念2、C/S的工作过程,以及C/S软件的各自特点3、*协议端口号及应用4、插口地址概念重点理解:主要了解:1、熟知的协议端口号与使用2、互联网C/S工作模式与TCP/IP的关系3、服务器并发处理3第3页,共64页,2022年,5月20日,1点7分
2、,星期三相互作用的客户-服务器( Client/Server)模型 在TCP/IP互联网中,进程间相互访问的模式主要是客户服务器交互模式客户和服务器分别是两个应用程序(进程)。客户向服务器发出服务请求,服务器做出响应。服务器客户互联网进程(Process)就是运行中的程序。解决具体应用问题的逻辑处理和通信进程总称为“应用进程”。4第4页,共64页,2022年,5月20日,1点7分,星期三为什么选择客户-服务器模式第一个原因:互联网中资源、运算能力和信息不均等的现实。资源、运算能力不均:小到一个物理网络,往往是某些主机拥有大容量的外存,某些主机只有很少外存或没有外存,有些主机拥有打印机,有些主机
3、没有;大到整个互联网,少数网点拥有超速运算能力,而大量网点由PC机构成.信息分布不均:比如名字信息、地址信息等。这些信息往往以数据库形式存在于少数特权主机当中,供局部或全局访问。这些信息一般具有公用性,为了节约整个网络的资源,没有必要在每一台机器上都维持一个拷贝。不均等现象不可避免,而客户-服务器模式体现了这种现象并很好地适应了这种现象。5第5页,共64页,2022年,5月20日,1点7分,星期三第二个原因:是技术性的。 互联网进程通信与单机进程通信不同:互联网通信完全是异步的,无法知道哪个主机会在何时发起通信。 因此,需要一种机制,为准备通信的进程之间建立联系,为两者的数据交换提供同步。 C
4、/S模式是客观现实与技术实现相结合的产物!首先,什么是早期单机应用软件的工作方式?和早期单机应用软件一般只和本机资源交互,包括通信串/并口。当出现网络应用后,应用软件需要通过网络访问资源、交互信息,寻找一种基于网络的信息交互/计算分布模式。6第6页,共64页,2022年,5月20日,1点7分,星期三网络中计算机进程间通信同样存在主叫和被叫,但没有振铃机制。通信进程间收/发协调怎么办?互联网采用最简单的约定方式C/S模式电话通信的呼叫模式:主叫发起通信、被叫振铃和提机、开始通信。振铃机制实现依赖信令系统控制处理,协调双方通信(收/发)矛盾。在网络环境下,许多问题的解决往往是通过位于不同主机中的多
5、个进程之间的通信和协同工作来完成的。网络的进程之间怎样相互协同开始工作,为什么要C/S模式?7第7页,共64页,2022年,5月20日,1点7分,星期三2000年前后,SIP协议的发展类似信令系统的互联网会话(呼叫)系统,可定义更丰富的会话模式。传统TCP/IP网络应用程序使用客户/服务器模式,但C/S不是所有应用交互会话模式,如IP电话、视频会议、多方游戏等。在客户-服务器模式中,每次通信均由客户进程发起,服务器进程从开机起就处于等待状态。这可保证服务器随时对客户请求做出响应8第8页,共64页,2022年,5月20日,1点7分,星期三C/S模式是约定客户请求(发起)通信、服务器响应通信(提供
6、特定的服务),基本可以理解为请求/应答的分布计算(会话)模式。互联网将网络软件分为客户(client) 、服务器(server) ,客户和服务器都指通信中所涉及的两个应用进程。即本质是计算机软件。9第9页,共64页,2022年,5月20日,1点7分,星期三客户软件的特点 在进行通信时临时成为客户,但它也可在本地进行其他的计算,提供用户端基本应用功能框架。被用户调用,在用户本地计算机上运行,在需要时主动向远地服务器发起通信。可与多个服务器进行通信。通常不需要特殊的硬件和很复杂的操作系统。 10第10页,共64页,2022年,5月20日,1点7分,星期三服务器软件的特点 专门用来提供某种服务的程序
7、,可同时处理多个远地或本地客户的请求。在共享计算机上运行。当系统启动时即自动调用并一直不断地运行着。被动等待并接受来自多个客户的通信请求。一般需要强大的硬件和高级的操作系统支持。11第11页,共64页,2022年,5月20日,1点7分,星期三两个术语在C/S模式中:服务器:被动等待通信的程序。不是计算机。服务器级计算机:运行服务器软件的功能强大的计算机。硬件厂商把具有高速CPU、大容量存储器、功能强大的操作系统的计算机称为服务器,其实应该称为服务器级计算机。12第12页,共64页,2022年,5月20日,1点7分,星期三数据链路层物理层运输层网络层数据链路层物理层运输层网络层 发起连接建立请求
8、应用层应用层客户服务器因特网 接受连接接受请求计算机A计算机B1 C/S 工作建立过程请求、应答、数据交互,TCP/IP系统支持。C/S都需要TCP/IP系统支持C/S 工作过程和并发13第13页,共64页,2022年,5月20日,1点7分,星期三C/S模式的传输机制面向连接传输:使用面向连接的传输协议时,两个应用必须首先建立一个连接,然后在该连接上发送数据。无连接传输:应用可以利用无连接接口在任何时间向任何目的发送消息。客户和服务器在通信时,既可以使用面向连接传输协议,又可以使用无连接传输协议。当使用面向连接传输时,客户需要首先形成一个到特定服务器的连接,该连接在客户发送请求和接收响应的过程
9、中保持不变。当客户完成对服务的使用时,必须关闭这一连接。14第14页,共64页,2022年,5月20日,1点7分,星期三一台计算机上可以运行多种服务器:1. 充分利用硬件资源。硬件可以被多种服务所共享。减少系统管理负载。因为这种情况可以减少被管理 的计算机系统的数量。如果对服务的需求比较低,那么把服务器合并到一台 计算机上能够显著地减少开销,而且并不会明显地降低性能。15第15页,共64页,2022年,5月20日,1点7分,星期三2 服务器多重服务:单计算机可安装多服务器软件来提供多重服务,在等待的时候不占用资源,但同时响应需要系统较多资源支持数据链路层物理层运输层网络层数据链路层物理层运输层
10、网络层数据链路层物理层运输层网络层应用层应用层应用层计算机A计算机B计算机C客户1服务器1服务器2客户2因特网16第16页,共64页,2022年,5月20日,1点7分,星期三并发性 客户-服务器交互模型的基础并发服务器可以同时为多个客户提供服务,并不需要每个客户等待前一个客户的请求完成大多数并发服务器都是动态操作的。即只有当请求到达时,服务器才会动态地为到来的请求创建一个新的线程。服务器程序由两部分组成:主线程和服务线程。主线程:负责接收请求并为请求创建一个服务线程来处理请求。并使服务器保持活跃状态,主线程在创建处理请求的服务线程之后,会等待另一个请求的到来。服务线程:负责处理每个请求,然后终
11、止。如果N个客户同时请求一台计算机上的给定服务,则会有N+1个线程提供服务。主线程等待额外的请求,N个服务线程与每个客户进行交互在互联网中,客户发起请求完全是随机的,很有可能出现多个请求同时到达服务器的情况。17第17页,共64页,2022年,5月20日,1点7分,星期三数据链路层物理层运输层网络层数据链路层物理层运输层网络层数据链路层物理层运输层网络层应用层应用层应用层计算机A计算机B计算机C客户1因特网客户23 服务器并发:服务器1*副本一个服务器同时响应多个请求,即服务器并发执行是基本的,而不是逐个响应。一个服务器软件包括:接收请求、处理单个请求和生成新线程三部分;当请求到达时,服务器将
12、它交给一个控制线程(副本),和已有线程并发。服务器118第18页,共64页,2022年,5月20日,1点7分,星期三复杂的C/S交互:实际大型网络应用S软件系统中,C/S的交互可能是复杂的过程。1、客户应用不限制访问一个服务器,客户一个应用可以成为多个不同服务器(可能不同计算机上)的客户,要处理多个服务器通信。2、提供某种服务的服务器同时能成为另一个服务的客户,如文件服务器在进行文件服务处理时需要记录时间,可能又要访问时间服务器。3、可能发生服务器的循环依懒,在两个服务器间,或多服务器之间的依懒环。19第19页,共64页,2022年,5月20日,1点7分,星期三数据链路层物理层运输层网络层数据
13、链路层物理层运输层网络层N个服务器因特网计算机A计算机BN个客户协议端口号C与S之间怎样准确识别特定服务?20第20页,共64页,2022年,5月20日,1点7分,星期三一台运行多种服务器的计算机上,每种服务器如何识别发给自己的请求?解决方法: 传输协议为每种服务分配一个惟一的标识符,服务器和客户必须使用这一标识符。服务器开始运行时,它向本地协议软件注册它使用的服务标识符。客户访问远程服务器时,需要指定对应的服务标识符。客户计算机上的传输协议软件在发送请求时,向服务器计算机发送这一标识符,服务器计算机上的传输协议软件使用这一标识符决定处理这一请求的服务器程序。21第21页,共64页,2022年
14、,5月20日,1点7分,星期三端口端口就是运输层服务访问点 TSAP端口的作用就是让应用层的各种应用进程都能将其数据通过端口向下交付给运输层,以及让运输层知道应当将其报文段中的数据向上通过端口交付给应用层相应的进程。从这个意义上讲,端口是用来标志应用层的进程。服务器通过它明确所提供的服务22第22页,共64页,2022年,5月20日,1点7分,星期三FTPTELNETSMTPDNSTFTPSNMP TCP UDP2123255369161应用层传输层端口层23第23页,共64页,2022年,5月20日,1点7分,星期三102823.源端口目的端口TELNETB目的端口号=23把包发送到我的TE
15、LNET应用中AB24第24页,共64页,2022年,5月20日,1点7分,星期三端口 端口用一个 16 bit 端口号进行标志。端口号只具有本地意义,即端口号只是为了标志本计算机应用层中的各进程。在因特网中不同计算机的相同端口号是没有联系的。25第25页,共64页,2022年,5月20日,1点7分,星期三两类端口 一类是熟知端口,其数值一般为 01023。当一种新的应用程序出现时,必须为它指派一个熟知端口。另一类则是一般端口,用来随时分配给请求通信的客户进程。 26第26页,共64页,2022年,5月20日,1点7分,星期三TCP/IP定义的应用程序熟知端口:FTP: 21, Telnet:
16、 23, SMTP: 25,DNS: 53, TFTP:69, HTTP : 80, SNMP: 161,协议端口号定义而一般端口,是可以由系统开发人员随时定义分配的。27第27页,共64页,2022年,5月20日,1点7分,星期三名称TCP端口号TCP端口号描述EchoDiscardDaytimeChargenTime7913193779131937服务器返回客户发送的所有内容服务器丢弃客户发送的所有内容服务器以可读形式返回日期与时间当客户发一个数据报时,服务器发送一连续字符流,直至客户中断连接;UDP发一随机长度的数据报从服务器返回一个32bit数,表示UTC时间1900 .1.1午夜至今
17、的秒数通常TCP/IP的主要端口号:1225之间,端口号2561023由Unix系统占用,端口号10245000作为临时端口分配,5000以上(作为其他服务器)不常出现。标准简单服务端口号28第28页,共64页,2022年,5月20日,1点7分,星期三为什么服务器端口号一定是唯一定义的,而客户端的端口号可以是按定义的,也可以临时自指定的,只具有本地意义? 为什么服务器端口号一定是唯一定义的,而客户端的端口号可以是按定义的,也可以临时指定的?答:协议端口号解决是C/S交互过程中服务器定位问题,使所有客户都能正确找到需要的服务,所以服务器端口一定唯一确定的,而客户源端口号只对客户自己有效。一计算机
18、可以有多个应用进程,通过不同的端口号(源不同/目的相同,源同/目的不同,均不同),同时进行多任务处理,此时TCP/UDP、IP完成复用与分用。 协议端口号解决是C/S交互过程中服务器定位问题,使所有客户都能正确找到需要的服务,所以服务器端口一定唯一确定的,而客户源端口号只对客户自己有效。29第29页,共64页,2022年,5月20日,1点7分,星期三实际通过TCP应用,除端口外,还必须有IP地址。 TCP连接的两个端点(端与端通信),是由端点地址(IP地址,端口号)确定, (IP地址,端口号)也被称为插口(Socket),或者端地址(Endpoint Address)。实际通过TCP通信,除端
19、口外,为什么必须有IP地址?30第30页,共64页,2022年,5月20日,1点7分,星期三TCP/UDP协议插口0 4 10 16 31 源端口 目的端口 TCP/UDP头部 数据其它字段 TCP/UDP头部 数据 IP头部32bit源地址 32bit目的地址其它字段从IP包结构看,网络应用进程通信需要端地址(IP地址,端口号)31第31页,共64页,2022年,5月20日,1点7分,星期三第3.1 总结1、什么是C/S工作模式? 2、网络应用为什么需要C/S模式?3、 为什么通常服务器软件复杂?4、应用进程通信端口地址,为什么还要IP地址?是否需要物理网地址?32第32页,共64页,202
20、2年,5月20日,1点7分,星期三第3.1章 作业1、客户软件和服务器软件主要特点。2、一个服务器软件通常需要包括哪些主要的功能部分。3、为什么通常服务器端口号是唯一定义的,而客户端的端口号可以临时指定? 33第33页,共64页,2022年,5月20日,1点7分,星期三第3.2节、应用程序接口API3.2.1 应用程序接口概述3.2.2 套接字API基本结构3.2.3 实现套接字API的过程3.2.4 套接字API的其它问题3.2.5 套接字API实现实例34第34页,共64页,2022年,5月20日,1点7分,星期三第3.2节:重点与难点1、应用编程接口的概念与重要性2、套接字API的特点/
21、函数/参数3、Socket套接字API实现的基本过程重点理解:主要了解:1、套接字API主要过程的作用2、套接字继承与服务器并发35第35页,共64页,2022年,5月20日,1点7分,星期三3.2.1 应用程序接口概述C/S模式解决了应用程序通过互联网交互方式等待/请求,并通过端口号来标识服务器提供的某种服务。尽管TCP/IP 并不复杂,但应用程序编写当然不希望每次逐一填写TCP/IP的各个报头;应用程序对网络低层通信细节实际不想关心,所以在应用程序和通信网络之间怎样形成标准的接口API,应用程序只需要通过API就能完成通信和数据交互,是网络应用发展的一大进步。互联网应用程序怎样和TCP/I
22、P协议通信接口?即C、S编程怎样使用TCP/IP协议进行通信与数据交互。传统通过网络(DDN、FR、ATM)的交互,使用计算机串行接口或LAN仿真,通信网把数据传递到对方计算机,其余需要计算机应用处理。 网络编程接口发展背景存在问题:1、计算机应用和网络两层皮;2、计算机应用必须和底层硬件(接口)打交道;严重阻碍网络应用发展。36第36页,共64页,2022年,5月20日,1点7分,星期三数据链路层物理层运输层网络层数据链路层物理层运输层网络层N个服务器因特网计算机A计算机BN个客户应用进程通过端地址建立可靠双工通信连接和收发数据,应用程序或编程人员怎样处理各种协议(TCP/IP/IGMP)的
23、具体报格式?需要逐一包文内容填写?37第37页,共64页,2022年,5月20日,1点7分,星期三实际互联网应用程序只需要通过API完成通信和数据交互的调用,从而不需要处理网络的细节,是网络应用发展的一大进步。API体现了现代网络又一个重要思想应用程序与网络“一体”又“分离”。一体:把网络通信对上抽象API成为计算机体系组成部分,网络API定义与设计已成为所有处理网络应用与网络通信底层接口的实际方法,在3G/4G,NGN网络中最大标准组就是解决其API的问题。分离:实现高效、简捷API,就意味着实现应用与网络通信底层“分离”,就可不关心通信实现的细节,大大降低了网络应用开发难度,促进应用发展。
24、38第38页,共64页,2022年,5月20日,1点7分,星期三应用程序接口API是应用程序通过TCP/IP协议软件进行通信交互的接口,它是一组定义的操作(非硬件),API决定了网络应用所能达到功能和这些功能编程开发的难度。应用程序接口API是一般由操作系统(或编程系统)提供,是由应用程序调用的一个过程及过程所需的参数。通常一个API基本操作是独立过程,如API一个过程完成建立通信,另一个过程完成数据接收。应用程序接口API概念API:Application Program Interface,应用程序接口或应用编程接口39第39页,共64页,2022年,5月20日,1点7分,星期三通信协议只
25、是规定协议应该提供的操作,并不指定应用程序与协议进行交互时的API。协议端口与API接口有什么区别?协议端口是服务器软件的标识,16位整数;API是一个执行过程。40第40页,共64页,2022年,5月20日,1点7分,星期三套接字API(Socket API)互联网API主要有两类:1、伯克利版API(Socket API,称为套接字API),从BSD Unix版发展而来。2、A&AT版TLI 运输层接口 Transport Lay Interface尽管互联网允许OS系统选择API,但目前Windows(WinSoc)、Unix、Linux主流OS系统广泛接受套接字API,所以成为事实上标
26、准。套接字API是操作系统的一个组成部分。41第41页,共64页,2022年,5月20日,1点7分,星期三Socket API:应用程序与TCP/IP协议之间的接口,它作为一种通用的通信编程接口而设计。42第42页,共64页,2022年,5月20日,1点7分,星期三Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。43第43页,共64页,2022年,5月20日,1点7分,星期三套接字AP
27、I的基本结构套接字API是Unix操作系统的发展而来的,套接字API网络通信描述基本保持Unix对设备、文件的操作风格。如 Unix文件操作采用“openreadwriteclose”过程模式,首先产生一个操作的描述符,然后每个过程由函数+参数具体组成。套接字API同样用描述符的方法,在使用通信协议前必须申请操作系统生成一个套接字,系统返回一个小整型数(如3、5)作为描述符来识别这个套接字,以后通信过程中这个套接字作为参数,而不必每次传输时指明细节。44第44页,共64页,2022年,5月20日,1点7分,星期三API过程中应用程序选择的端口、通信地址、客户或服务器、使用协议等怎么表达呢?套接
28、字API通过定义多个函数(而不是单个,为什么?),来确定参数和选项;既当创建套接字描述符后,调用多个函数过程说明套接字使用的具体细节。总结:套接字API的使用是通过首先创建套接字(返回整型描述符),然后调用多个包含具体参数和选项的函数过程,完成应用程序和协议通信的接口。为什么是多个而不是单个,单个绝对不行吗?45第45页,共64页,2022年,5月20日,1点7分,星期三实现套接字API的过程Socket过程 该过程创建一个套接字并返回一个整数描述字。 descriptor=socket( protofamily, type, protocol)close过程 该过程告诉系统终止对套接字的使用
29、。 close( socket)bind过程 服务器使用该过程来提供服务器所使用的、用于等待连接的协议端口号。 bind( socket, localaddr, addrlen)46第46页,共64页,2022年,5月20日,1点7分,星期三listen过程 服务器调用该过程来等待来自客户的连接。 listen( socket, queuesize)accept过程 面向连接的服务器必须调用accept过程才能接收下一个连接请求。 newsock=accept( socket, caddress, caddresslen)connect过程 客户调用该过程建立与特定服务器之间的连接。 conn
30、ect( socket, saddress, saddresslen)47第47页,共64页,2022年,5月20日,1点7分,星期三send过程 如果套接字被连接,可以利用该过程发送数据。 send( socket, data, length, flags)sendto过程 和sendmsg 过程 允许客户或服务器使用无连接套接字发送数据。 sendto( socket, data, length, flags, destaddress, addresslen) sendmsg( socket, msgstruct, flags)是一个结构,该结构包含了关于目的地址,目的地址的长度,发送的消
31、息,以及消息的长度等信息。48第48页,共64页,2022年,5月20日,1点7分,星期三recv过程 应用可以调用该过程从连接套接字中接收数据。 recv( socket, buffer, length, flags)recvfrom过程 和recvmsg过程 如果套接字并没有被连接,应用可以用于接收来自任意发送者的消息 recvfrom( socket, buffer, length, flags, sndraddr, saddrlen) recvmsg( socket, msgstruct, flags)是一个结构,该结构含有接收消息的地址和发送者的IP地址。49第49页,共64页,20
32、22年,5月20日,1点7分,星期三实现套接字API的过程1、创建一个套接字并返回一个返回整型描述符 DescriAptor=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
33、第50页,共64页,2022年,5月20日,1点7分,星期三4、Listen过程 Listen(socket,queuesize)如服务器是面向连接的,需要使用Listen 过程将套接字设置为被动模式,然后必须接受一个连接请求。Queuesize:客户请求队列的长度,开始为空。3、Close过程 close (socket)close过程的调用告诉系统终止对一个套接字socket的使用,系统对套接字进行释放,应用程序与传输协议间停止数据交互。如果套接字在使用面向连接的传输时,在关闭套接字前先关闭连接。51第51页,共64页,2022年,5月20日,1点7分,星期三5、Accept过程 news
34、ock=accept(caddress,caddresslen)使用面向连接通信时, Accept过程在套接字中确定了连接客户的地址,服务器通过调用Accept过程接受下一个连接。然后Accept为该连接创建一个新套接字newsock 返回调用者,服务器将用这个新套接字和客户通信,直至与该客户通信结束。caddress:按照socket地址结构表达的客户端IP地址。4-5步骤是面向连接通信时服务器必须的过程调用,完成被动地接受一个连接请求,然后创建一个服务器与特定客户TCP连接的新的套接字,依次通信,同时原套接字仍保持不变;当该客户连接结束后,使用原套接字接受来自下一个客户的连接。52第52页
35、,共64页,2022年,5月20日,1点7分,星期三6、客户端Connect过程 Connect(socket,saddress,saddresslen)当使用面向连接的TCP, Connect过程启动一个指定服务器的运输层连接,本质上说Connect是客户与已经调用了Accept过程的服务器进行连接的过程。 saddress是按一般socket地址结构表达的服务器IP地址和协议端口号。 非常有意思的是,当客户使用无连接的UDP协议时,也可以使用 Connect过程,此时并不启动一个连接,而仅仅使得 socket与服务器端地址联编。通常对无连接的传输一般每一个IP报指明目的地址,但许多应用客户
36、只和一个服务器通信,也即具有同样的端目的地址。此时客户可以通过套接字的地址记录,发送多条信息,而不必每条指明地址。无连接传输的Connect过程调用,建立连续无地址的IP包传输,实际上理解为客户 程序不需要给API指明端地址,而使用API默认地址。53第53页,共64页,2022年,5月20日,1点7分,星期三7、Send过程 send(socket,data,length,flags)当套接字连接建立后, 客户与服务器就需要发送信息,客户与服务器使用Send 过程完成数据发送。data 是内存待发数据的地址,length是数据字节数 , flags 特殊选项位(常用于系统调试)。 sendt
37、o(socket,data,length,flags,destaddress,addresslen) sendto过程是客户或服务器在未连接时发送信息, destaddress 是目的地址的socket结构表达。 sendmgs(socket,mgsstrucct,flags) sendmgs过程完全同sendto,但定义结构简化参数表达, mgsstrucct是包括目的地址、地址长度,待发信息位置和信息长度的结构表达(具体不展开)。允许客户或服务器使用无连接套接字发送数据。54第54页,共64页,2022年,5月20日,1点7分,星期三8、Recv过程 recv(socket,buffer,
38、length,flags)当套接字连接建立后, 客户与服务器也同样需要接收信息,客户与服务器使用Recv过程完成从一个连接的套接字中接收数据。buffer 是内存中存放接收到的数据的地址,length是缓冲区大小,flags 控制细节选项。 recvfrom(socket,buffer,length,flags,sndraddr,saddrlen) recvfrom过程是客户或服务器在未连接时接收任一客户发来的信息,同时对应每收到的信息返回发送地址作为应答,sndraddr是发送地址的socket结构表达。 recvmgs(socket,mgsstrucct,flags) recvmgs过程完
39、全同recvfrom ,简化参数的表达,并和 sendmgs过程对应。mgsstrucct是一个结构,该结构含有接收消息的地址和发送者的IP地址。55第55页,共64页,2022年,5月20日,1点7分,星期三其他套接子过程:1.getpeername过程:服务器在调用accept过程接收连接请求之后,可以调用该过程,以获得启动连接的远程客户的完整地址。2.gethostname过程:客户或服务器可以调用该过程来获取运行该程序的计算机的信息。3.gethostbyname过程:通过计算机名字返回该计算机的IP地址。客户经常使用该过程将用户输入的名字转换成相应的协议软件所需的IP地址。4.get
40、hostbyaddr过程:给出一台计算机的IP地址,它将返回该计算机的名字。当要向人们显示主机信息时,客户或服务器就可以使用该过程。 write(socket, buffer,length) read (socket, buffer,length)套接字API继承Unix的I/O一般操作,对已建立连接的套接字,可通过write-read套接字进行网络数据传输,其功能同send-recv过程。56第56页,共64页,2022年,5月20日,1点7分,星期三客户-服务器模式的socket实现框架服务器Socket( )bind( )listen( )accept( )阻塞,等待客户连接请求recv
41、( )处理服务请求send( )Socket( )connect( )send( )recv( )客户建立连接服务请求服务响应面向连接的客户-服务器服务器必须首先启动,直到它执行完accept()调用,进入等待状态后,方能接受客户请求。假如客户先启动,则connect()将返回出错代码,连接不成功。服务器 端地址联编创建套接字等待连接请求, 请求队列长度客户地址新套接字建立连接服务器端地址获取IP地址与定义端口57第57页,共64页,2022年,5月20日,1点7分,星期三套接字、并发与线程套接字API设计需要适应服务器并发,当服务器并发创建一个副本时,每个新创建的线程从创建的线程继承所有套接字的一个副本,也即继承拥有了所有套接字的访问权。一个并发服务器首先打开一个
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二四年度广告发布合同:品牌宣传广告投放协议
- 电器安装合同(2篇)
- 搭乘货车免责协议书(2篇)
- 合伙协议书(2篇)
- 二零二四年度劳动合同服务期限规定
- 厨具设备供应商招标要求
- 铝合金轻量化购销合同
- 二零二四年度体育场馆设施改造合同
- 有机肥料购销合同
- 啤酒节赞助协议书
- 社区矫正法教育知识讲座
- 医疗健康管理项目推广运营方案
- 胃石症的护理查房
- 河道拉管施工方案
- 危大工程监理巡视检查用表
- 江苏省2023-2024学年四年级上学期数学期中备考卷一(南通专版)
- 常用材料物性一览表
- 人教-高一英语必修三-Unit4-听说课-名师教学设计
- 交通银行交银金融科技有限公司校园2023年招聘30人笔试历年难、易错考点试题含答案附详解
- 记叙文写作教学公开课一等奖市赛课获奖课件
- 2.PaleoScan详细操作流程
评论
0/150
提交评论