注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

一路奔跑

奔跑着一路向前...

 
 
 

日志

 
 

Windows Sockets 规范与应用(第一章)  

2009-09-25 18:09:11|  分类: Sockets |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
第一章   简介  
  1.1   什么是Windows   Sockets规范?  
  Windows   Sockets规范以U.C.   Berkeley大学BSD   UNIX中流行的Socket接口为范例定义了一套Micosoft   Windows下网络编程接口。它不仅包含了人们所熟悉的Berkeley   Socket风格的库函数;也包含了一组针对Windows的扩展库函数,以使程序员能充分地利用Windows消息驱动机制进行编程。  
  Windows   Sockets规范本意在于提供给应用程序开发者一套简单的API,并让各家网络软件供应商共同遵守。此外,在一个特定版本Windows的基础上,Windows   Sockets也定义了一个二进制接口(ABI),以此来保证应用Windows   Sockets   API的应用程序能够在任何网络软件供应商的符合Windows   Sockets协议的实现上工作。因此这份规范定义了应用程序开发者能够使用,并且网络软件供应商能够实现的一套库函数调用和相关语义。  
  遵守这套Windows   Sockets规范的网络软件,我们称之为Windows   Sockets兼容的,而Windows   Sockets兼容实现的提供者,我们称之为Windows   Sockets提供者。一个网络软件供应商必须百分之百地实现Windows   Sockets规范才能做到现Windows   Sockets兼容。  
  任何能够与Windows   Sockets兼容实现协同工作的应用程序就被认为是具有Windows   Sockets接口。我们称这种应用程序为Windows   Sockets应用程序。  
  Windows   Sockets规范定义并记录了如何使用API与Internet协议族(IPS,通常我们指的是TCP/IP)连接,尤其要指出的是所有的Windows   Sockets实现都支持流套接口和数据报套接口.  
          应用程序调用Windows   Sockets的API实现相互之间的通讯。Windows   Sockets又利用下层的网络通讯协议功能和操作系统调用实现实际的通讯工作。它们之间的关系如图1-1。  
  虽然我们并不反对使用这一套API来实现另一通讯协议栈(而且我们期望在将来规范的修改中能够讨论这个问题),但这种用法已经超出了我们这一份规范所规定的范围,我们在此将不作讨论。  
  1.2   Bekeley套接口  
  Windows   Sockets规范是建立在Bekeley套接口模型上的。这个模型现在已是TCP/IP网络的标准。它提供了习惯于UNIX套接口编程的程序员极为熟悉的环境,并且简化了移植现有的基于套接口的应用程序源代码的工作。Windows   Sockets   API也是和4.3BSD的要求一致的。  
  1.3   Microsoft   Windows和针对Windows的扩展  
  这一套Windows   Sockets   API能够在所有3.0以上版本的Windows和所有Windows   Scokets实现上使用,所以它不仅为Windwos   Sockets实现和Windows   Sockets应用程序提供了16位操作环境,而且也提供了32位操作环境。  
  Windows   Sockets也支持多线程的Windows进程。一个进程包含了一个或多个同时执行的线程。在Windows   3.1非多线程版本中,一个任务对应了一个仅具有单个线程的进程。而我们在本书中所提到的线程均是指在多线程Windows环境中的真正意义的线程。在非多线程环境中(例如Windows   3.0)这个术语是指Windows   Sockets进程.  
  Windows   Sockets规范中的针对Windows的扩展部分为应用程序开发者提供了开发具有Windows应用软件的功能。它有利于使程序员写出更加稳定并且更加高效的程序,也有助于在非占先Windows版本中使多个应用程序在多任务情况下更好地运作。除了WSAStartup()和WSACleanup()两个函数除外,其他的Windows扩展函数的使用不是强制性的。  
  1.4   这份规范的地位  
  Windows   Sockets是一份独立的规范。它的产生和存在是为了造益于应用程序开发者,网络软件供应商和广大计算机用户。这份规范的每一份正式出版的版本(非草稿)实际上代表了为网络软件供应商实现所需和应用程序开发者所用的一整套API。关于这套规范的讨论和改进还正在进行之中。这样的讨论主要是通过Internet上的一个电子邮件论坛-winsock@microdyne.com进行的。同时也有不定期的会议举行。会议的具体内容会在电子邮件论坛上发表。  
  1.5   曾经作过的修改  
  1.5.1   Windows   Sockets   1.0  
  Windows   Sockets   1.0代表了网络软件供应商和用户协会细致周到的工作的结晶。Windows   Sockets   1.0规范的发布是为了让网络软件供应商和应用程序开发者能够开始建立各自的符合Windows   Sockets标准的实现和应用程序。  
  1.5.2   Windows   Sockets   1.1  
  Windows   Sockets   1.1继承了Windows   Sockets   1.0的准则和结构,并且仅在一些绝对必要的地方作了改动。这些改动都是基于不少公司在创作Windows   Sockets   1.0实现时的经验和教训的。Windows   Scokets   1.1包含了一些更加清晰的说明和对Windows   Sockets   1.0的小改动。此外1.1还包含了如下重大的变更:  
  *   加入了gethostname()这个常规调用,以便更加简单地得到主机名字和地址。  
  *   定义DLL中小于1000的序数为Windows   Sockets保留,而对大于1000的序数则没有限制。这使Windows   Sockets供应商可以在DLL中加入自己的界面,而不用担心所选择的序数会和Windows   Scokets将来的版本冲突。  
  *   增加了WSAStartup()函数和WASClearup()函数之间的关联,要求两个函数互相对应。这使得应用程序开发者和第三方DLL在使用Windows   Sockets实现时不需要考虑其他程序对这套API的调用。  
  *   把函数intr_addr()的返回类型,从结构in_addr改为了无符号长整型。这个改变是为了适应Microsoft   C编译器和Borland   C编译器对返回类型为四字节结构的函数的不同处理方法。  
  *   把WSAAsyncSelect()函数语义从“边缘触发”改为“电平触发”。这种方式大大地简化了一个应用程序对这个函数的调用。  
  *   改变了ioctlsocket()函数中FIONBIO的语义。如果套接口还有未完成的WSAAsyncSelect()调用,该函数将失败返回。  
  *   为了符合RFC   1122,在套接口选项中加入了TCP_NODELAY这一条。  
  所有Windows   Sockets   1.1对于Windows   Sockets   1.0的改动在以下都作了记号。
  评论这张
 
阅读(127)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018