WSAEventSelect 模型的实现
来源:互联网 发布:唯品会快递配送网络 编辑:程序博客网 时间:2024/04/25 15:19
WSAEventSelect 模型的实现
WSAEventSelect 模型跟WSAAsync模型类似,他们都是由网络事件通知的,不同的是
WSAAsyncSelect是通过窗口的消息来获得通知,而WSAEventSelect是通过事件对象受信来得到通知的。
1. WSAEventSelect首先把socket,事件对象,和一组由FD_READ,FD_WRITE,FD_ACCEPT,FD_CONNECT,FD_CLOSE等等组成的网络事件给绑定在一起。
2.然后调用WSAWaitForMultibleEvents来等待这些网络事件的发生。如果等待完成:
3.如果等待完成,那么就调用WSAEnumNetworkEvents来获得具体是什么网络事件。
下面是服务器服务主线程的代码:
因为每个WSAWaitForMultipleEvents只能够最多等待WSA_MAXMUM_WAIT_OBJECTS个事件对象,这个值被定义为64,所以最多等待64个对象。要等待更多的客户端,就需要创建更多的线程,所有这里实现了个线程池,如果一个线程
已经等待了64个,那么就新建一个线程去等待去管理这些套接字。
这里实现了一个线程池,通过两个结构体:
来实现线程对套接字的管理,有个全局的对象:
//THREAD _OBJ 全局列表
THREAD_OBJ * g_thread_list=NULL;
用来保存所有的线程结构链表,而所有的SOCKET_OBJ结构体又被包含每个THREAD_OBJ结构体中,通过这两个list来实现线程池的。
线程工作函数如下:
各相关辅助函数如下:
- WSAEventSelect 模型的实现
- 基于WSAEventSelect模型的TCP服务器实现
- WSAEventSelect编程模型实现
- WSAEventSelect模型的端口映射。 另外一种WSAEventSelect模型的端口映射。WSAEventSelect模型的端口映射。 另外一种WSAEventSelect模型的端口映射。
- WSAEventSelect模型
- WSAEventSelect模型
- WSAEventSelect模型
- WSAEventSelect模型
- WSAEventSelect模型
- WSAEventSelect模型
- WSAEventSelect模型
- WSAEventSelect模型
- WSAEventSelect模型
- WSAEventSelect模型
- WSAEventSelect模型
- WSAEventSelect模型
- WSAEventSelect模型
- WSAEventSelect模型
- 学生信息管理系统——几点心得
- 无线网络性能测试标准
- poj 2240(bellman 最短路)
- css摘记!!!
- 水池排水自动控制 请设计PLC控制梯形图
- WSAEventSelect 模型的实现
- VC++.Net在Release方式下单步调试时需要修改一些设置,否则变量会有错位或乱码
- Synchronized wait notify
- fmt:formatDate的输出格式
- AS3中不规则四边形的图片填充方法
- 手机
- TeX/LaTeX: 页面设置及常见段落格式的设定
- 107个常用Javascript语句
- 怎么坚持?