- 1、本文档共9页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第24章套接字接口
下载
第2 4章 套接字接口
24.1 概述
上一章介绍了客户/服务器交互,即应用程序在通过互联网进行通信时使用的基本模式。
还介绍了使用客户/服务器交互的动机,讨论了并发等概念,并说明了客户与服务器如何使用
传输协议进行通信。
本章通过讲解应用程序与协议软件之间的接口来给出有关客户/服务器交互的更多细节。
在这一章中,我们考虑应用程序如何使用协议软件进行通信,并讲解一组过程,应用程序能通
过使用它们成为客户或服务器,以及与远程目标进行通信或进行数据传输。
下一章将继续讨论接口过程在实际中的使用,并给出客户和服务器的完整的实例程序。
24.2 应用程序接口
前面说过,客户与服务器应用是使用传输协议进行通信的。当应用程序与协议软件进行交
互时,它必须说明一些细节,诸如它是服务器还是客户(即,它是被动等待还是主动启动通信)
等。此外,进行通信的应用程序还必须说明更多的细节(例如,发送方必须说明要传送的数据,
接收方必须说明接收的数据应放在何处)。
应用程序通过传输协议进行交互时所用的接口称为应用程序接口( Application Program
I n t e r f a c e ,A P I )。一个A P I定义了应用程序与协议软件进行交互时可以使用的一组操作。因此,
A P I 决定了应用程序所能实现的功能,以及开发具有这些功能的程序的难度。
大多数编程系统提供的 A P I给出应用程序能够调用的一组过程以及这些过程所需的参数。
通常,A P I对每个基本操作都有一个独立的过程。例如, A P I可能有一个过程用来建立通信,
另一个过程用来接收数据。
24.3 套接字A P I
通信协议标准并不总会定义应用程序用来与该协议进行交互的 A P I 。相反,协议规定应该
提供的一般操作,并允许各个操作系统去定义应用程序用来实现这些操作的具体 A P I 。因此,
一个协议标准可能只是建议某个操作在应用程序发送数据时是需要的,而由 A P I 来定义具体的
函数名和每个参数的类型。
虽然协议标准允许操作系统设计者选择A P I ,但大多数人仍接受了套接字A P I (socket API ,
有时也被简称为套接字)。套接字A P I被许多操作系统所支持,包括个人计算机上所使用的操作
系统(例如 M i c r o s o f t 的Windows NT 和Windows 98 )及各种U N I X 系统(例如 Sun 公司的
S o l a r i s )。
套接字A P I最初是BSD UNIX 操作系统的一个部分。这项工作得到了政府的支持,在这样
的条件下加州大学伯克利分校开发并推广了一个包括 T C P / I P互联协议的U N I X 。许多计算机供
应商将B S D 系统移植到他们的硬件上,并将其作为商业操作系统产品的基础。这样,套接字
A P I成为工业界事实上的标准。概括如下:
第24章 套接字接口计计185
下载
应用程序与操作系统中通信协议之间的接口称为应用程序接口或 A P I 。套接字A P I
是一个事实上的标准。
24.4 套接字与套接字库
在BSD UNIX 及起源于它的系统中,套接字函数是操作系统本身的一部分。由于套接字被
越来越广泛地使用,其他系统的供应商也纷纷决定将套接字 A P I加入他们的系统。在许多情况
下,为了不修改他们的基本操作系统,供应商们开发了套接字库( socket library )来提供套接
字A P I 。也就是说,供应商们开发了一套过程库,其中每个过程具有与套接字函数相同的名字
与参数。
从开发应用的程序员角度看,套接字库与操作系统中实现的套接字在语义上是相同的。程
序调用套接字过程,而不管它是由操作系统过程还是库程序所提供的。因此,一个使用套接字
的程序可以被复制到一台新的计算机上,用新计算机上的套接字库重新编译后执行—在将程
序从一台计算机移植到另一台时源代码无须更动(在实际应用中,套接字库很少是完美的,在
标准套接字A P I和套接字库之间总会有些许差异,例如一些出错的处理)。
虽然具有明显的相似性,但套接字库在实
文档评论(0)