EasyIocp - 勘误

主线程利用MsgWaitForMultipleObjects等待子线程结束时,同时处理子线程发送的窗口消息 假设我们有主线程A,子线程B、C、E、F。主线程和子线程操作模型如下图所示: 主线程A创建了四个线程B-D。子线程分别调用SendMessage函数发送界面信息到主线程,而主线程在创建完子线程后就会wait子线程退出。 子线程调用SendMessage时,SendMessage函数需要执行完后才能返回,SendMessage返回后子线程才可以退出,但是此时主线程阻塞在等待子线程结束 阅读详情

EayIocp有更改会在这里列出日志,建议大家去这里下载最新代码。


1)2014年7月4日 - 意外关闭监听套接字的bug

    优快云网友kkia进行了如下操作:“试了下 ,服务端正常开启,客户端把sendMessage发送数据注释掉,然后编译运行,此时客户端程序停留在recv函数处,到现在一切正常,但是点击客户端窗口的关闭后,服务端的线程全部退出了。。。也就是崩溃了,我刚接触到这个,也不知道什么原因。”。

    我自己尝试了一下EasyIocp输出如下图。WSAGetLastError给出错误消息如下:

   

    错误原因是关闭客户端时,EasyIocpError::DealCompletionError函数处理错误ERROR_NETNAME_DELETED(ErrorCode = 64),此时调用EasyClients::RemoveClient函数时关闭了套接字,而此套接字是监听套接字,然后造成了(ErrorCode=995)的错误消息。此bug在于EasyClients::RemoveClient实现有问题,不应该一开始就调用closesocket,而是应该查找是否有此客户端若有才进行清理操作。

    函数EasyClients::DealCompletionError未区分出现错误的套接字是监听套接字,还是数据传输套接字,而是简单的对他们进行统一处理。若需要更详细的处理错误,可以在此函数中调用CompletionKey::GetKeyType获得套接字类型,根据监听套接字或是数据传输套接字进行错误处理。

利用vc++中.rc2文件把工程中的资源分类存放 需求分析: 公司的软件产品是为不同类型的板卡写界面,界面是以对话框为主。往往一块板卡的对话框就有十几个,板卡总共也有十几块,这样以来默认的.rc资源文件和resource.h文件会有些混乱,最头痛的就是有些界面要修改,修改资源文件会造成对话框ID和控件ID很混乱,对于有点强迫症的我来说看见混乱的控件ID和不宜管理的各种对话框资源肯定想整理一下。想出了两个方向。 初步方案: 研究一下vc+ 阅读详情

相关推荐

我的IOCP学习笔记 - EasyIocp

之前我有上传过"完整的IOCP实例" 后来被网友找出bug 所以重新上传 1 http: blog youkuaiyun.com iirecord article details 27840969 这里是关于工程大致说明 2 http: blog youkuaiyun.com iirecord article details 32955109 这里是工程运行展示 3 http: blog youkuaiyun.com iirecord article details 36908835 这里是勘误部分 会根据网友回馈解决bug 更新代码 强烈建议在看此勘误blog 根据勘误blog的链接下载最新版代码 ">之前我有上传过"完整的IOCP实例" 后来被网友找出bug 所以重新上传 1 http: blog youkuaiyun.com iirecord article details 27840969 这里是关于工程大致说明 2 http: blog youkuaiyun.com iirecord article details 32955109 这里是工程运行展示 3 http: blog [更多]

IOCP的几点细节

1) 即使ReadFile或者WriteFile函数返回真,完成包还是会从GetQueuedCompletionStatus取得。 2) 与完成端口句柄绑定的套接字,其设置超时选项虽然可以成功,却是无效的。因为其相当于非阻塞模式,超时只是对阻塞模式而言的。 3) 一旦相关的套接字操作发生网络错误,GetQueuedCompletionStatus会返回假。通过GetQueuedCompleti

sinservice的专栏 1468

piggyxp小猪IOCP项目源码

这份代码是我博客里的文章《完成端口详解 - 手把手教你玩转网络编程系列之三》的配套代码 里面的代码包括VC++2008/VC++2010编写的完成端口服务器端的代码,还包括一个对服务器端进行压力测试的客户端,都是经过我精心调试过,并且带有非常详尽的代码注释的。当然,作为教学代码,为了能够使得代码结构清晰明了,我还是对代码有所简化,如果想要用于产品开发,最好还是需要自己再完善一下 详情请参见我的博客 http://blog.youkuaiyun.com/piggyxp

谈谈IOCP模型下tcp套接字资源的释放

之前使用图形化NetworkManager配置静态IP,但在/etc/network/interfaces中找不到静态IP的配置信息,让人不解。 今天在网上看到网友的一则文章,知道了在/etc/NetworkManager/system-connections/这个目录也保存着网络配置信息。 https://www.bbsmax.com/A/lk5anqmNd1/ dream361@ma...

twd_1991的专栏 631

车载毫米波雷达实战:用MATLAB复现DDMA-MIMO雷达的Empty-band算法(附代码解析)

本文详细介绍了车载毫米波雷达中DDMA-MIMO技术的实战应用,重点解析了Empty-band算法的原理与MATLAB实现。通过搭建仿真环境,文章深入探讨了发射天线通道解调与相位法速度解模糊两大核心难题的解决方案,并提供了完整的代码解析,为雷达算法工程师提供了从理论到实践的清晰指南。

hill8的博客 563

基于STM32的电子时钟设计

基于STM32的电子时钟设计1、设计目的2、设计具体要求3、proteus仿真图4、程序代码 1、设计目的 (1)掌握使用KEIL MDK5进行软件开发的具体流程; (2)掌握硬件电路的设计方法; (3)掌握STM32微控制器的程序设计及代码编写方法。 2、设计具体要求 (1)通过STM32自带的实时时钟功能获取时间信息; (2)在OLED显示屏上显示日期、时、分、秒等时间信息; (3)通过按键可对时间信息进行修改; (4)具有闹钟设定功能; (5)加分项:自行增加其他功能。 3、proteus仿真图 4

唯一的博客 2万+

IOCP编程注意事项

虽说我的昵称是EasyIOCP,但是用好IOCP还是不容易的,有很多要注意的地方,长话短说(不涉及细节):         1、每个连接同时最好只有一个待决的WSARecv。IOCP不保证多个待决WSARecv情况下先投递的WSARecv就一定会先得到完成通知。因此 ,多个待决WSARecv可能导致数据乱序,无谓增加代码复杂性。         2、投递0长度缓冲区的WSARecv可以不

EasyIOCP的专栏 7606

拌合楼软件开发(24)接收微信消息生成车辆计划

【摘要】针对拌合站客户群体文化程度不高、习惯微信群沟通的业务场景,提出通过企业微信机器人实现微信对话下单的解决方案。核心是利用WorkTool工具的消息回调机制:1)配置接收消息的API接口;2)解析JSON格式的对话数据,筛选@机器人的有效消息;3)采用*号分隔符提取订单信息并进行校验;4)建立微信昵称与客户系统的映射关系。方案解决了传统系统登录门槛高的问题,但需注意群名唯一性、多系统对接及客户身份识别等关键问题。全文重点阐述技术实现逻辑而非具体代码。

morsth的博客 1045

我的IOCP学习笔记 - 相关类定义

类EasyIocp定义:

iiRecord的专栏 1160

【C语言】程序员筑基功法——《函数栈帧的创建与销毁》

汇编角度带你走进函数栈帧

StackFrame 3662

LDO 上电过冲的根因

LDO在上电瞬间常出现短时过冲电压(3.4V-3.5V),可能损坏敏感器件。其根本原因是:低

硬核科技 294

【勘误清单】《机器学习》 周志华 北京: 清华大学出版社

周志华 著. 机器学习, 北京: 清华大学出版社, 2016年1月. (ISBN 978-7-302-206853-6)  425页,62.6万字 勘误修订 (第一版第一次印刷, 2016年1月): p.6, 图1.2: 图中两处"清脆" --> "浊响" p.28, 第3段倒数第2行: "大量" --> "不少" p.28, 边注: "例如 ……上

小道一只朱 7143

使用plot函数可视化F分布累积分布函数数据(R语言)

在上面的代码中,我们使用了seq()函数来生成从0到5之间,以0.1为步长的一组F值。然后,我们指定了分子自由度为3,分母自由度为8,并使用pf()函数计算了对应的F分布CDF值。在本文中,我们将介绍如何使用R语言的plot函数来可视化F分布的累积分布函数(CDF)数据。通过使用plot函数,我们可以直观地了解F分布的累积分布函数,并对F值和对应的累积概率之间的关系有更深入的认识。运行上述代码后,我们将获得一个由F值和对应的累积概率构成的图形,其中x轴表示F值,y轴表示累积概率。

LogicGuruX的博客 503

TCP连接的关闭

这是我自己总结的TCP连接关闭是几种情形,不保证正确性与全面性,假定A端和B端通信: 1、双方四次握手的过程; 2、A端半关闭,经过一段时间,B端数据发送完毕并被A端确认,B端半关闭,A端进入TIME_WAIT状态; 3、A端或B端主动直接RST; 4、保活定时器启动:B端停止响应(路由故障,对方主机崩溃、重启,网线被拔等等),迫使A端保活定时器启动,2个小时(具体由协议栈实现)之后B端仍

EasyIOCP的专栏 1645

ADS基础教程16 - 存档和导入(workspace、cell、view)

选择workspace_Archive目录作为保存workspace归档的目录,点击打开进行目录选择,点击Finish保存目录。,选择cell_Archive目录作为保存cell归档的目录,点击打开进行目录选择,点击Finish保存目录。,选择view_Archive目录作为保存view归档的目录,点击打开进行目录选择,点击Finish保存目录。(2)在弹框中,可以选择点击Select将参考的条目添加进来,然后点击Next…(2)在弹框中,可以选择点击Select将参考的条目添加进来,然后点击Next…

XZ_ZC的博客 3707

用 sapgenpse 把 SAPCRYPTOLIB 的 SNC 真正配通

摘要: 在SAP系统中配置SNC(Secure Network Communications)时,sapgenpse工具是关键,尤其在旧版本或组件缺乏图形化维护工具时。核心步骤包括安装SAP Cryptographic Library、创建PSE(Personal Security Environment)、生成运行凭据,并确保证书交换顺序正确。常见问题如RFC连接失败或握手错误,往往源于PSE创建或凭据配置不当。需特别注意SECUDIR目录设置、PSE身份管理(单一或独立PSE方案)、以及服务账号凭据的权

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 66

采用完成端口(IOCP)实现高性能网络服务器(Windows c++版)

前言  TCP\IP已成为业界通讯标准。现在越来越多的程序需要联网。网络系统分为服务端和客户端,也就是c\s模式(client \ server)。client一般有一个或少数几个连接;server则需要处理大量连接。大部分情况下,只有服务端才特别考虑性能问题。本文主要介绍服务端处理方法,当然也可以用于客户端。   我也发表过c#版网络库。其实,我最早是从事c++开发,多年前就实现了对完成端口...

1203

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

我的IOCP学习笔记

简单介绍CodingNote/IOCP目录下两个工程EasyIocp和IocpDemo。由于这两个工程使用的线程池都是NT6线程池,所以要喝和XP说拜拜咯。          编写IOCP逻辑确实挺麻烦的。麻烦之一是IOCP本身异步的机制、麻烦之二是IOCP相关的API的使用,麻烦之三就是用这些API编写收发数据逻辑。因此我的学习方式是一步一个脚印,一步一个笔记。           

iiRecord的专栏 1545

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

我的IOCP学习笔记 - 运行展示

想起来我学IOCP时看见运行结果时,自然而然便会弄懂一些疑惑,所以这里展示一下运行结果。 1)工程fileIocp。

iiRecord的专栏 1414

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

上一篇: 我的IOCP学习笔记 - 运行展示
下一篇: 最基础的mysql笔记
xiaoyanzi521
博客等级 码龄17年 11粉丝 12原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值