网络编程的步骤
- WSAStartup
- socket
- bind
- listen
- accept
- send/recv
- closesocket
- WSACleanup
消息(异步/窗口)选择模型
- WSAStartup
- socket
- bind
- listen
- 创建窗口
- WSAAsyncSelect(套接字,窗口句柄,消息,网络事件)
- 响应绑定的消息
- accept/recv/send/close
- 消息处理函数:wparam是绑定的套接字 lparam是网络事件或通知码
事件选择模型
- WSAStartup
- socket
- bind
- listen
- 创建事件WSACreateEvent
- WSAEventSelevet(套接字,事件(内核对象),网络事件) 绑定的网络事件被触发的时候激活事件内核对象
- WSAWaitforXXX,等待事件(内核对象)被激活
- Wait函数的返回值就是事件内核对象在数组中的索引值
- 通过WSAEnumXXX获取触发的是什么网络事件
- accept/recv/send/close
完成端口模型
- WSAStartup
- socket
- bind
- listen
- while(accept)
- accept返回接收到的客户端连接后,向完成端口队列提交一次recv任务,当对方send消息过来时,完成端口帮我完成recv操作
- 处理完上次的recv请求后,继续向完成端口提交下一个recv请求
网友评论