第8章计算机网络应用程序设计.pptVIP

  1. 1、本文档共23页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第8章计算机网络应用程序设计

第8章计算机网络应用程序设计 8.1 套接口API的有关概念 8.2 基本Socket函数 8.3 基于TCP的socket程序设计 8.4 基于UDP的socket 程序设计 8.5 输入输出多路复用 8.6 并发服务器程序设计 8.1 套接口API的有关概念 8.1.1 网络应用编程接口 Berkeley套接口API WinSock 远程过程调用(RPC) 8.1.2 socket编程模型及类型 套接口可分如下5种类型:流式套接字、数据报套接字、原始套接字、SOCK_SEQPACKET及SOCK_RDM。 流式套接字定义了一种可靠的面向连接的服务,实现了无差错的数据传输。 数据报套接字定义了一种无连接的服务,数据通过相互独立的报文进行传输,是无序的,并且不保证可靠。 原始套接字允许对低层协议如IP或ICMP直接访问,主要用于新的网络协议实现的测试等。 8.1.3 socket地址——应用进程的标识 Internet上两台主机种的进程间要进行通信,必须能够互相识别。用于标识进程的信息有两个: 主机名或主机地址 主机内部标识进程的标识符 这两部分合在一起,成为套接口地址(计算机通信的基础构筑块 ) 8.1.4 通信进程的阻塞和非阻塞方式 对于运行状态中的进程来说,当某些条件不具备,如输入输出条件还没有准备好时,该进程可以有两种处理方式:阻塞与非阻塞。 阻塞方式 在阻塞方式下,当输入输出条件还没有准备好时,就将进程转入阻塞状态,标记阻塞原因,并保留当前进程现场信息,然后将控制转入进程调度程序,等阻塞原因解除后,将进程状态由阻塞变成就绪等待处理机,或直接获得由调度程序再次分配的处理机,恢复阻塞的现场继续执行。 非阻塞方式 在非阻塞方式下,当输入输出条件还没有准备好时,进程仍处于运行状态,通过循环,反复进行某条件的查询。一般说来,阻塞机制可以防止进程在循环反复的查询等待中造成资源浪费。但是有时在应用中需要进程一直处于运行状态,不希望进程在对socket的操作中阻塞,这时就要使用非阻塞机制。 8.2 基本Socket函数 8.2.1 初始化套接口——服务绑定socket() 1、功能: 在应用程序中使用插口API时,首先要创建一个插口--socket。为了说明什么是socket,可以打个比方:一个电话插座,既可以接电话机打电话,也可以接传真机发传真,还可以接计算机上网。接上什么设备,就是绑定了什么服务。创建一个插口,就是创建一个通信,需要指定提供什么服务,即为一个标识符绑定某个服务,并为之分配资源。这个标识就是该插口标识。 应用程序调用socket()函数将创建一个插口。 2、原型 8.2.2 本地地址绑定bind() 1、功能 调用函数bind(),可以将本地地址与插口绑定在一起。调用成功时,返回0;否则,返回1,并设置全局变量errno为错误类型 2、原型 8.2.3 建立套接口连接-绑定远程服务器地址connect() 功能 函数connect()可以让客户机程序建立一个与TCP服务器的连接. 原型 8.2.4 套接口被动转换listen() 函数listen()有两个功能。 (1)主动插口的被动转换 socket()创建的插口都是主动插口,只可以用来(调用connect())进行主动连接(发出请求),不能接收连接请求。listen()函数将未连接的主动插口转换为被动插口,即倾听插口(listening socket),告诉操作系统该插口可以接收连接请求。所以listen()也称为创建倾听插口函数。 (2)设置最大请求连接数 listen()用一个参数(backlog)指定完成队列的最大长度。如果一个客户机的SYN数据段到达时,倾听插口的完成队列已经满了,TCP则忽略这个SYN数据段。 listen()函数执行成功,返回0,服务器的TCP状态由CLOSED转变成LISTEN,成为被动模式;执行失败,返回1。 原型 8.2.4 套接口被动转换listen() 创建TCP服务器倾听插口的过程 (1)首先调用socket()函数创建一个主动插口; (2)调用bind()函数进行插口地址绑定; (3)调用listen()函数进行转换。 8.2.5 从被动套接口的完成队列中接受一个连接请求accept() 功能 一个插口被创建、用bind绑定本地地址并转换成被动模式后,必须接收一个连接请求。一旦接收了连接,服务器就能使用该连接与客户机进行通信。面向连接传输协议的服务器调用 accept从被动(倾听)插口的完成连接队列中接收下一个连接请求。如果该完成连接队列空,则使这个进程睡眠。 原型 8.2.5 从被动

文档评论(0)

wuailuo + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档