- 1、本文档共74页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Winsock I/O方法
设计、讲授:谭献海
设计、讲授
Email:xhtan@
Email:
2009年10月
1
主要内容
1、 套接字模式
1.1 阻塞模式
1.2 非阻塞模式
2、 套接字I/O模型
2.1 select模型
2.2 WSAAsyncSelect
2.3 WSAEventSelect
2.4 重叠(overlapped)模型
2.5 完成端口模型
3、 I/O模型的问题
4 、 小结
2
Winsock分别提供了“套接字模式”和“套接字I/O模
型”,来对一个套接字上的I/O行为加以控制。其中,套
接字模式用于决定在随一个套接字调用时,该Winsock函
数的行为。而套接字I/O模型描述了一个应用程序如何对
套接字上的I/O进行管理及处理。
套接字模式:
阻塞 (Blocking)
非阻塞 (non-blocking)
套接字I/O模型:
Select(选择)
WSAAsyncSelect(异步选择)
WSAEventSelect(事件选择)
Overlapped I/O (重叠式I/O)
Completion port(完成端口)
3
操作系统对套接字I/O模型的支持情况
4
性能测试结果
下表是Network Programming for Microsoft
Windows 2nd 一书中对不同模式的一个性能测试结果。
服务器采用Pentium 4 1.7 GHz Xeon的CPU,768M 内
存;客户端有3台PC,配置分别是Pentium 2
233MHz ,128 MB 内存,Pentium 2 350 MHz ,128
MB内存,Itanium 733 MHz ,1 GB内存。
5
1 套接字模式
Windows套接字在两种模式下执行I/O操作:阻塞和
非阻塞。
在阻塞模式下,在I/O操作完成前,执行操作的
Winsock 函数(比如send和recv)会一直等候下
去,不会立即返回程序(将控制权交还给程序),
直到该函数操作完成,或出错。
在非阻塞模式下, Winsock 函数无论如何都会立
即返回。
6
1.1 阻塞模式
对于处在阻塞模式的套接字,我们必须
多加留意,因为在一个阻塞套接字上调
用任何一个Winsock API 函数,都会产生
相同的后果—耗费或长或短的时间“等
待” 。
一个典型的例子
7
简单的阻塞模式示例
代码的问题:
SOCKET sock; 假如没有数据处于“待决”状
char buff[256];
文档评论(0)