第12章 WinSock网络程序设计.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第12章 WinSock网络程序设计

第12章 WinSock网络程序设计 ;12.1 WinSock的基本情况 ; Windows Sockets API是Microsoft Windows的网络程序接口,它包括一个标准的Berkeley Sockets功能调用的集合,以及为Windows所做的重要扩充。扩充的功能调用都以WSA(Windows Sockets Asynchronous)作前缀,表明它们允许异步的I/O操作,并采用了符合Windows消息机制的网络事件异步选择机制。这些扩充有利于应用程序开发者更好地利用Windows的消息驱动特性,设计出高性能的网络程序。; Windows Sockets的实现一般都由两部分组成:开发组件和运行组件。开发组件是供程序员开发Windows Sockets应用程序使用的,包括介绍Windows Sockets实现的文档、Windows Sockets应用程序接口(API)引入库和一些头文件。头文件WINSOCK.H是Windows Sockets最重要的头文件,包括了Windows Sockets实现所定义的宏、常数值、数据结构和函数调用接口类型。运行组件是Windows Sockets应用程序接口的动态连接库(DLL),文件名为WINSOCK.DLL,应用程序在执行时通过装入它实现网络通信功能。 ;12.2 套接字编程基本概念 ; 套接字都具有类型,是根据用户可见的通信特征进行分类的。应用程序被假定为只在同一类型的套接字间通信,不过只要通信协议支持,也可在不同类型的套接字间通信。 TCP/IP的Socket提供三种类型的套接字: (1) 流式套接字(SOCK_STREAM):提供一个面向连接的、可靠的数据传输服务,数据无差错、无重复地发送,且按发送顺序接收。内设流量控制,避免数据流超限;数据被看作是字节流,无长度限制。文件传送协议(FTP)即使用流式套接字。; (2) 数据报式套接字(SOCK_DGRAM):提供一个无连接服务。数据包以独立包形式被发送,不提供无错保证,数据可能丢失、重复或接收顺序混乱。网络文件系统(NFS)使用数据报式套接字。 (3) 原始式套接字(SOCK_RAW):该接口允许对较低层协议(如IP、ICMP)直接访问。常用于检验新的协议实现或访问现有服务中配置的新设备。 ; 12.2.2 网间进程通信 1. 端口 网络中可以被命名和寻址的通信端口是操作系统可分配的一种资源。按照OSI协议的描述,传输层与网络层在功能上的最大区别是传输层提供进程通信能力。从这个意义上讲,网络通信的最终地??不仅仅是主机地址,还包括可以描述进程的某种标识符。为此,TCP/IP协议提出了协议端口(protocol port,简称端口)的概念,用于标识通信的进程。 ; 端口是一种抽象的软件结构(包括一些数据结构和I/O缓冲区)。应用程序(进程)通过系统调用与某端口建立连接(binding)后,传输层传给该端口的数据都被相应进程所接收,相应进程发给传输层的数据都通过该端口输出。在TCP/IP协议的实现中,端口操作类似一般的I/O操作,进程获取一个端口,相当于获取本地惟一的I/O文件,可以用一般的读写原语访问。 类似于文件描述符,每个端口都拥有一个叫端口号(port number)的整数型标识符,用于区别不同的端口。由于TCP/IP传输层的两个协议TCP和UDP是完全独立的两个软件模块,因此各自的端口号也相互独立。 ; 端口号的分配是个重要问题,有两种基本分配方式:全局分配和本地分配。全局分配是一种集中控制方式,由一个公认的中央机构根据用户需要进行统一分配,并将结果公布于众。本地分配又称动态链接,即进程需要访问传输层服务时,向本地操作系统提出申请,操作系统返回一个本地惟一的端口号,进程再通过合适的系统调用,将自己与该端口号联系起来。TCP/IP中端口号的分配综合了上述两种方式。TCP/IP将端口号分为两部分,少量的作为保留端口,以全局方式分配给服务进程,因此每个标准服务器都拥有一个全局公认的端口即周知端口(well-known port),即使在不同机器上,其端口号也相同。剩余的为自由端口,以本地方式进行分配。TCP和UDP均规定,小于256的端口号才能作保留端口。; 2. 地址 网络通信中通信的两个进程在不同的机器上。这两个机器可能位于不同的网络,这些网络通过网络互联设备(网关、网桥、路由器等)连接。因此需要三级寻址: (1) 某一主机与多个网络相连,必须指定一特定网络地址。 (2) 网络上每一主机应有惟一的地址。 (3) 每一主机上的每一进程应有在该主机上的惟一标识符。 通常主机地址由网络ID和主机ID组成,在TCP/IP协议中用32位整数值表示;TCP和UDP

文档评论(0)

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

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

1亿VIP精品文档

相关文档