网站大量收购闲置独家精品文档,联系QQ:2885784924

计算机网络第七讲客户服务器编程(Chapter26-28).ppt

计算机网络第七讲客户服务器编程(Chapter26-28).ppt

  1. 1、本文档共23页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
计算机网络 第七讲 客户/服务器编程 (Chapter26-28) 房鼎益 电子邮件:dyf@nwu.edu.cn 应用层概述 客户/服务器交互概念 需要澄清的几个概念 标识一个特定服务 并发服务器 应用层提供面向用户的服务 应用层利用底层协议提供的服务进行通信 通用的可靠数据传输服务 寻址(主机、应用程序)服务 应用程序之间的通信都使用同一种交互方式,这种交互方式称为客户/服务器(Client/Server)模式。 客户/服务器交互:客户应用主动地启动通信,而服务器应用被动地等待。 客户端软件的特性: 是一个普通的应用程序 在用户的计算机上本地运行 直接被用户调用,可分时访问多个服务 主动地与服务器启动通信 不需要特殊的硬件和高级的操作系统 服务器软件的特性: 是一种专门用来提供某一种服务的程序 在一台共享计算机上运行 在系统初启时自动启动,可以同时与多个远程客户进行通信 被动地等待来自任意客户的通信 需要强大的硬件和高级的操作系统支持 服务器:指一个被动地等待通信的程序。 服务器级计算机:具有快速CPU、大存储量和强大操作系统的计算机。 一台服务器级计算机可以提供多重服务,以共享资源,减小开销,便于管理。 服务器程序既可以接收信息也能发送信息,还可以成为客户。 客户并不限于访问一种服务器。 TCP赋予每个服务一个唯一的协议端口号。服务器通过协议端口号来指定它所提供的服务,然后被动地等待通信。 客户在发送请求时通过协议端口号来指定它所希望的服务。服务器端计算机通过此端口号将收到的请求转发给正确的服务器。 每一个会话由两个标识唯一确定:服务器和客户端的(IP地址,端口号)。客户端的端口号可以是任意选定,但必须唯一。 并发服务器是指一个服务器可以同时为多个客户提供服务。 服务器在每一个客户请求到来时创建一个新的线程。如果有N个客户正在使用一台机器上的服务,则存在N+1个提供该服务的线程:主线程等待更多的请求,同时有N个从线程分别同一个客户进行交互。 服务器端使用客户标识和服务器标识的结合来选择正确的并发服务器的副本。 套接字API概念 实现套接字API的过程 用套接字进行读写 其它套接字过程 套接字、线程与继承 API: 应用程序通过传输协议进行交互时所使用的接口称为应用程序接口(API)。 通信协议只定义API应当提供的一般操作,而让操作系统来定义完成这些操作的API规范。API允许应用程序在不同平台兼容。 套接字API最初是BSD UNIX操作系统的一部分,后来成为工业界事实上的标准。 应用程序通过套接字进行通信的过程,与应用程序与文件进行数据交换是很相似的。 SOCKET:创建一个新的套接字 BIND:给服务器绑定一个传输层地址 LISTEN:将服务器设为被动模式。 ACCEPT:接收客户的一个请求 CONNET:客户向服务器发起连接 SEND:向一个连接的套接字发送数据 RECV:从一个连接的套接字接收数据 CLOSE:终止一个连接 套接字允许使用read和write进行数据传输 read和write有三个参数:套接字描述符,缓冲区,缓冲区长度 read和write必须用于已连接的套接字 使用read和write的优点是应用程序可以同一个描述符进行数据传输,而无需知道此描述符对应的是一个文件还是一个套接字。因此可以用本地文件来测试套接字。 Getsockname:获得套接字本地完整地址。 Getpeername:获得套接字远端完整地址。 Getsockopt:获得当前套接字选项。 Setsockopt:设置当前套接字选项。 Gethostbyname:由计算机名字获得IP地址。 Gethostbyaddr:由IP地址获得计算机名字。 Getprotobyname:由协议名字得到协议号。 每个新创建的线程从创建它的线程继承所有套接字的一个副本。 服务器主线程为每一个连接的客户创建一个新的套接字和新线程。 主线程关闭新套接字,新线程关闭旧套接字。 系统对套接字的引用进行计数,计数器为0才能删除套接字。 面向连接的通信 流服务与多重recv调用 套接字过程与阻塞 客户访问不同的服务 其它客户访问服务器 无连接的通信 在服务器端,只调用了一次send()。 在客户端,循环调用recv()接收数据。 TCP并不保证数据在单个数据段中发出。 TCP也不保证recv返回的恰好是send所传送的数据量。 TCP保证send将数据依次发送 TCP保证recv调用返回一个或多个数据。 在程序调用套接字过程时,程序会因为套接字过程需要等待其它资源或过程而被挂起(阻塞)。 程序被挂起时不使用CPU时间,挂起时间可以任意长。 阻塞过程有:accept, connect,

文档评论(0)

jdy261842 + 关注
实名认证
内容提供者

分享好文档!

1亿VIP精品文档

相关文档