- 5
- 0
- 约1.14万字
- 约 73页
- 2018-04-13 发布于河南
- 举报
第3章Winsock基础
其中: 参数s标识请求事件通知的套接字的描述符; 参数hWnd标识网络事件发生时,接收消息的窗口的句柄; 参数wMsg为网络事件发生时,窗口接收到的消息; 参数lEvent为指定应用程序感兴趣的网络事件组合的位屏蔽,可由表3.1中所列的值组成。 表3.1 IEvent可用事件 3.3.3 WSAEventSelect模型 WSAEventSelect模型是WinSock提供的另一个有用的异步I/O模型,与WSAAsyncSelect模型类似的是,它也允许应用程序在一个或多个套接字上,接收以事件为基础的网络事件通知,并且它支持的网络事件与WSAAsyncSelect模型一样。它与WSAAsyncSelect模型的主要区别在于网络事件会被发送到一个事件对象句柄,而不是发送到一个窗口。 首先,调用函数WSACreateEvent()创建事件对象来接收网络事件,其函数原型为 WSAEVENT WSACreateEvent(void); 其返回值是一个事件对象句柄,该事件有两种工作状态“已传信(signaled)”和“未传信(nonsignaled)”及两种工作模式“人工重设(manual reset)”和“自动重设(auto reset)”。默认状态下事件处于“未传信”的工作状态和“人工重设”模式。 其次,要调用WSAEventSelect()函数将创建的事件对象与某个套接字关联在一起,同时注册感兴趣的网络事件类型,使事件对象的工作状态从“未传信”转变成“已传信”。WSAEventSelect()函数原型为 int WSAEventSelect( SOCKET s, WSAEVENT hEventObject, long lNetworkEvents); 其中: 参数s为一个标识套接字的描述字; 参数hEventObject用于指定与所提供的FD_XXX网络事件集合相关的一个事件对象句柄; 参数lNetworkEvents是一个屏蔽位,用于指定感兴趣的FD_XXX网络事件组合。 由于事件对象创建后默认处于人工重设模式,因此在完成一个I/O请求的处理之后,应用程序需要调用WSAResetEvent函数将事件对象的工作状态从“已传信”更改为“未传信”。WSAResetEvent()函数原型为 BOOL WSAResetEvent( WSAEVENT hEvent); 其中:参数hEvent是一个事件句柄,成功则返回TRUE,失败则返FALSE。 一个套接字与一个事件对象句柄关联在一起后,应用程序就可以通过WSAWaitForMultipleEvents()函数等待网络事件来触发事件句柄的工作状态,进行I/O处理,其原型为 DWORD WSAWaitForMultipleEvents( DWORD cEvents, const WSAEVENT FAR *lphEvents, BOOL fWaitAll, DWORD dwTimeout, BOOL fAlertable ); 其中: 参数lphEvents为指向一个事件对象句柄数组的指针。 参数cEvents指出lphEvents所指向的数组中事件对象句柄的数目,事件对象句柄数组的最大值为WSA_MAXIMUM_WAIT_EVENTS。 参数fWaitAll指定等待类型,若为TRUE,则当lphEvents数组中的所有事件对象同时有信号时,函数返回;若为FALSE,则当任意一个事件对象有信号时函数就返回。后一种情况返回值指出是哪一个事件对象造成函数返回。通常把该参数设置为FALSE,一次只为一个套接字事件提供服务。 参数dwTimeout指定超时等待时间(以毫秒计),若超时间隔到,不论fWaitAll参数所指定的条件是否满足,函数即返回。如果dwTimeout为零,则函数测试指定事件对象的状态,并立即返回。如果dwTimeout为WSA_INFINITE,则函数的超时间隔永远不会到。 参数fAlertable指定当系统将一个I/O完成例程放入队列以供执行时,函数是否返回,若为TRUE,则函数返回并执行完成例程;若为FALSE,则函数不返回且不执行完成例程。在Win 16中应忽略该参数。 返回值:如果函数调用成功,则指出造成函数返回的事件对象;如果函数调用失败,则返回值为WSA_WAIT_FAILED。 这样,应用程序就可引用事件数组中已传信的事件,并检索与那个事件对应的套接字,判断到底是在哪个套接字上,发生了什么网络事件类型。对事件数组中的事件进行引用时,应该用WSAWaitForMultipleEvents的返回值,减去预声明值WSA_WAIT_EVENT_0,
您可能关注的文档
- 胖胖也有春天.ppt
- 快与慢习题(演示).ppt
- Less_09建表.ppt
- 03EX1000资源与客户端管理.ppt
- 全二阶段测试4..doc
- 环监期末复习.doc
- 高考数学专题十二:直线圆锥曲线平面向量.doc
- 高考汇编—三角函数.doc
- 2012思想汇报及转正申请6+1.doc
- 专题三竖直面上运动问题.ppt
- 河北盐山中学等校2025-2026学年上学期高三一模化学试卷(含解析).docx
- 河北正定中学2025-2026学年高一上学期期末考试物理试卷(含解析).docx
- 河北张家口市怀安县2025-2026学年第一学期期末教学综合评价八年级地理试卷(含解析).docx
- 河南安阳市殷都区2025-2026学年第一学期期末教学质量检测七年级地理试卷(含解析).docx
- 河南安阳市滑县2025一2026学年第一学期期末学业质量监测八年级地理试题(含解析).docx
- 河南安阳市林州市2025-2026学年上学期期末考试高一政治试题(含解析).docx
- 河南焦作市武陟县第一中学2025-2026学年高一上学期1月月考语文试卷(含解析).docx
- 河南济源市2025-2026学年上学期期末学业质量调研七年级历史试卷(含解析).docx
- PICC导管并发症的紧急处理与护理.pptx
- 河南鹤壁市2025-2026学年高二上学期期末考试生物试题(含解析).docx
最近下载
- 智盛国际结算教学实训平台软件操作手册V3.0.pdf
- 2026年江西工业工程职业技术学院单招职业适应性测试题库含答案详解.docx VIP
- OpenClaw自我研究报告1.0.pdf VIP
- 05S804矩形钢筋混凝土蓄水池(建筑结构图集).pdf
- 中成药用药指导原则.pdf
- 医学课件-2025心肺复苏指南最新标准.pptx VIP
- 热电集中供压缩空气项目可行性研究报告写作模板-申批立项.doc
- 矿山开采中SimbaH1354(中深孔)台车故障诊断及规避.pdf VIP
- 吉林省长春市2026届高三年级质量检测化学(一)(长春一模)(含答案).pdf
- 2026年辅警招聘笔试考试题库及答案.docx VIP
原创力文档

文档评论(0)