一种 Windows IOCP 整合 OpenSSL 实现方案

<<一种 Windows IOCP 整合 OpenSSL 实现方案>>

by 阙荣文 Que's C++ Studio
2021-06-06

TedQue/IOCP_SSL_Demo: IOCP integrate with OpenSSL (github.com)

1. IOCP 和 epoll 编程模型比较

本来程序员们都已经习惯了传统的 select 模型(包括 linux epoll 和 BSD kqueue),非常好理解. 但 Windows IOCP API接口另搞了一套,显得相当异类.
我个人还是更喜欢传统的 select 模型,而且我认为所谓的重叠操作没什么意义,为什么需要同时投递多个同类请求呢?比如发送一个大文件时,我们不可能放任程序一直投递写请求而使内存用量失控.
基于上述原因,也为了跨平台使用方便,最终把 IOCP 封装为 epoll 风格的接口,程序结构大致如下,是最常见的事件循环:

    for (;;)
    {
        // 等待网络事件
        selector->wait(&socket, &ev);
        
        // 分类处理活跃的网络事件
        if (TEST_BIT(ev, IO_EVENT_SEND))
        {
        }
        else if (TEST_BIT(ev, IO_EVENT_RECV))
        {
        }
        else
        {

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值