- 11
- 0
- 约1.4千字
- 约 7页
- 2020-11-08 发布于江苏
- 举报
实验 7 WSAeventselectWINSOCK I/O 模型程序设计
一.实验目的
通过这次实验, 要掌握 Winsock 提供了另一个有用的异步 I/O 模
型 WSAeventselect WINSOCIK/O 模型。和 WSAAsyncSelect模型类似
的是,它也允许应用程序在一个或多个套接字上, 接收以事件为基础
的网络事件通知。由 WSAAsyncSelect模型采用的网络事件来说,它
们均可原封不动地移植到新模型。 在用新模型开发的应用程序中, 也
能接收和处理所有那些事件。 该模型最主要的差别在于网络事件会投
递至一个事件对象句柄,而非投递 至一个窗口例程。由于
WSAeventselect WINSOCK I/O模型单线程只能处理 64 个套接字,要
处理大量客户 I/O 请求,可采用线程池技术来实现。
二.实验环境
操作系统: Microsoft Windows 7 专业版 64 位
开发软件: Visual C++
开发语言: C
三.实验原理
WSAEventSelect 提供了另 一种异步事件通知 模型。和是
WSAAsyncSelect 模型类似的是,它也允许应用程序在一个或多个套
接字上,接收以事件为基础的网络事件通知。由 WSAAsyncSelect模
型采用的网络事件来说, 它们均可原封不动地移植到新模型。 在用新
模型开发的应用程序中, 也能接受和出力所有那些事件。 该模型最主
要的差别在于网络事件会投递一个时间对象句柄, 而非投递一个窗口
例程。
四.实验方法及步骤
1. 程序设计步骤
(1)初始化 Winsock 库
(2)创建套接字
(3)绑定套接字
(4)监听
(5)创建事件对象,并关联到新的套接字
(6)处理事件对象
1). 在所有事件对象上等待
2). 获取到来的通知消息
3). 添加到表中
4). 接收到数据
2. 程序流程图
开始
WSAEventSelect
失败
WSAWaitForMultipleEv
ents
WSAEnumNetwortEvents
失败 ... ...
FD_ACCEPT FD_WRITE FD_READ
成功 成功
I/O操作
开始
WSAEventSelect
失败
WSAWaitForMultipleEv
ents
WSAEnumNetwortEvents
失败 ... ...
FD_ACCEPT FD_WRITE FD_READ
成功 成功
I/O操作
开始
WSAEventSelect
失败
WSAWaitForMultipleEv
ents
WSAEnumNetwortEvents
失败 ... ...
FD_ACCEPT FD_WRITE FD_READ
成功 成功
I/O操作
开始
WSAEventSelect
失败
WSAWaitForMultipleEv
ents
WSAEnumNetwortEvents
失败 ... ...
FD_ACCEPT FD_WRITE FD_READ
成功 成功
I/O操作
开始
WSAEventSelect
失败
WSAWaitForMultipleEv
ents
WSAEnumNetwortEvents
失败 ... ...
FD_ACCEPT FD_WRITE FD_READ
成功 成功
I/O操作
原创力文档

文档评论(0)