WinSock编程基础.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
在上一篇中,我们具体介绍了socket的相关概念,本节将概述套接字规范及操作的一些基础性知识。一.套接字的一些基础知识1.Windows通信相关驱动netio.sys(Network I/O Subsystem)ndis.sys(NDIS Driver)ipnat.sys(IP Network Address Translator)tcpip.sys(TCP/IP Driver)tdtcp.sys(TCP Transport Driver)tdi.sys(TDI wrapper)afd.sys(Ancillary Function Driver for Winsock)http.sys(HTTP Protocol Stack)……2.socket描述符(套接字句柄)“在UNIX系统中,任何东西都是一个文件。”这句话描述了这样一个事实:在UNIX系统中,任何对I/O的操作,都是通过读或写一个文件描述符(File DescriptorFile了到对方发送的数据Port+Length+Checksum)来实现的。一个文件描述符(FD)只是一个简单的整形数值,代表一个被打开的文件(这里的文件是广义的文件,并不只是代表不同的磁盘文件,它可以代表一个网络上的连接,一个先进先出的队列,一个终端显示屏等)。既然在UNIX系统中任何东西都是一个文件,通过Internet和另外一台机器进行通讯也是基于文件描述符来实现的。这个文件描述符即套接字内核对象:intsockfd。在早期的UNIX/Linux系统中,可调用read()和write()直接对套接字进行类似文件的读写操作,尽管调用recv()和send()显得更为专业。在Windoze系统中,内核对象往往交由一个句柄与外部交互,如文件句柄。在很多WinSock场合我们习惯使用“套接字句柄”这一称呼:typedefu_intSOCKET。实际上,WinSock中对于套接字的操作,很多也沿袭了文件操作的规范。例如,在Winsock 1中,应用程序可以针对套接字句柄调用ReadFile()和WriteFile(),同时指定重叠结构以利用重叠I/O模型,到Winsock 2中才正式替换为WSARecv()和WSASend(),以专用于套接字操作。3.Windows Sockets规范Sockets本来是UNIX操作系统下流行的一种网络编程接口(API),它是1983年在Berkeley(加州大学伯克利分校)4.2 BSD操作系统中被首先引入的,因此被称为“Berkeley Socket API”。Windows Sockets是在Windows环境下使用的一套网络编程规范,常常简称为WinSock。在Winsock规范中把Winsock API函数集分为与BSD Socket(用在UNIX中)相兼容的基本函数、网络数据信息检索函数和Windows专用扩展函数三类。Windows Socket 1规范的核心内容是符合Berkeley Socket风格的库函数,例如可以编写基于select模型的的socket跨平台库。select模型可以很好地实现跨平台,但对具体操作系统平台而言,并非性能最佳的I/O模型。为了使程序员能充分利用Windows消息驱动机制进行编程,又定义开发了一组针对Windows的扩展库函数,这就是Windows Socket 2规范。Winsock 2.x提供了基于Windows消息机制的WSAAsyncSelcet异步I/O网络事件通知模型,除此之外WinSock 2.x还提供了基于事件通知的异步I/O网络事件通知的WSAEventSelect模型和高效的重叠I/O模型。具体平台实现了各自高效的网络I/O管理模型,例如Windoze的IOCP模型、Linux的epoll模型,它们用来实现大规模高并发的通信应用程序。目前常用的Winsock有两个版本:一个是16位的Winsock 1.1,由动态链接库WINSOCK.DLL提供支持;另一个是32位的Winsock 2.2,由动态链接库WSOCK32.DLL提供支持。从Win98/NT4开始,Windows支持WinSock 2,而WinSock 1成为WinSock 2的功能子集。在32位系统下,16位的WINSOCK.DLL(Windows Socket 16-bit DLL)为Non-resident。ws2_32.dll和mswsock.dll是WinSock 2真正的实现者。wsock32.dll只是映射了ws2_32.Dll和mswsock.dll两个文件的一些函数调用,并无具体实现。使用Dependency Walker可以看到wsock32.dll和mswsock.dll都依赖ws2_32.dll。mswsock.dll提

文档评论(0)

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

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

1亿VIP精品文档

相关文档