DELPHI高性能大容量SOCKET并发(一):IOCP完成端口例子介绍

C#高性能大容量SOCKET并发(一):IOCP完成端口例子介绍 例子主要包括SocketAsyncEventArgs通讯封装、服务端实现日志查看、SCOKET列表、上传、下载、远程文件流、吞吐量协议,用于测试SocketAsyncEventArgs的性能和压力,最大连接数支持65535个长连接,最高命令交互速度达到250MB/S(使用的是127.0.0.1的方式,相当于千兆网卡1Gb=125MB/S两倍的吞吐量)。服务端用C#编写,并使用log4net作为日志模块。 阅读详情

例子主要包括IOCP控件封装、服务端实现、传输协议和日志、控制、SQL查询、上传、下载等协议实现,并包括一些初步的性能测试结果。

服务端:

界面截图如下:

提供服务和桌面方式运行,桌面方式可直接打开程序,方便日常调试,可以使用命令行注册或卸载服务,在CMD中输入D:\DEMO\IOCPDemo\Bin\IOCPDemoSvr.exe -install来注册服务,在CMD输入D:\DEMO\IOCPDemo\Bin\IOCPDemoSvr.exe -uninstall来卸载服务。

客户端:

界面截图如下:

主要实现了服务端日志查看,服务端协议类表查看,SQL语句执行协议,上传、下载协议实现,其中对上传、下载实现了一个多线程同时传,用于测试服务器并发性能。

性能:

支持超过2000个链接及以上同时上传文件,不过每个连接上传速度只有1到2K。支持超过2W个连接同时在线传输命令。

单实例上传下载测试结果:

从测试结果可以看出随着发送包增大,速度变快。这里存在一个风险,就是SOCKET传输失败的次数也会增加。

V1版下载地址:http://download.youkuaiyun.com/detail/sqldebug_fan/4510076,需要资源10分,有稳定性问题,可以作为研究稳定性用;

V2版下载地址:http://download.youkuaiyun.com/detail/sqldebug_fan/5560185,不需要资源分,解决了稳定性问题和提高性能;

免责声明:此代码只是为了演示IOCP编程,仅用于学习和研究,切勿用于商业用途。水平有限,错误在所难免,欢迎指正和指导。邮箱地址:fansheng_hx@163.com


DELPHI高性能大容量SOCKET并发(九):稳定性问题解决 IOCP接收缓存导致的内存错乱 在用IOCP控件写了一个ERP服务器后,服务器会发生运行3天后,出现莫名的内存错误,用FastMM检测,是本没有内存错误的地方,而且内存错误出现的地方也不固定。这是一个不可重现的Bug,后续通过打日志把错误范围缩小后发现,每次出现内存错误之前都是由于有链接断开释放,因此就加了日志逐步定位到是TSocketHandle释放引起的,具体原因是:在IOCP中,每个S 阅读详情

相关推荐

构建C#高性能并发Socket服务器:利用IO完成端口

C#网络通信通常依赖于System.Net和System.Net.Sockets命名空间下的类库。开发者可以利用这些类库提供的功能,编写客户端和服务器端应用程序,实现数据的发送和接收。然而,为了保证通信的效率和响应速度,我们需要对传统的网络通信方式加以优化。I/O完成端口(IOCP)是Windows平台下一种高效的并发I/O处理机制,它是通过将Socket注册到完成端口上,来异步处理大量的I/O操作。IOCP特性可以概括为以下几点:异步I/O操作。

weixin_36064575的博客 788

IOCP 从初学者角度最简化的说明(delphi示例)

IOCP最简化说明 IOCP越说越复杂,我想尝试简明的从初学者的概念来说明,把最迷惑的部分简要说明: 关键点一:完全IO端口返回的消息,是系统保存在队列里的!不是直接给你返回!因为需要够快,所以建立完全端口后,完全端口自己会处理完所以连接、接收的动作,并把处理好的消息保存到队列里!它不管你需不需要,只要合法的都存好!所以我们关键的动作也就是要从队列去消息出来处理! 关键点二:它的关键函数:到队列去取数据的函数,它是阻塞式的。你执行了这个函数,如果队列里没有消息,它会停住等到有消息之后才往下走(当然..

m0_60908963的博客 933

Delphi IOCP简单实例

Delphi IOCP简单实例,大家相互学习学习

DELPHI高性能大容量SOCKET并发(二):IOCP完成端口控件封装

IOCP完成端口介绍: 完成端口模型是Windows平台下SOCKET端口模型最为复杂的一种I/O模型。如果一个应用程序需要同时管理为数众多的套接字,而且希望随着系统内安装的CPU数量的增多,应用程序的性能也可以线性提升,采用完成端口模型,往往可以达到最佳的系统性能。 完成端口可以管理成千上万的连接,长连接传文件可以支持5000个以上,长连接命令交互可以支持20000个以上。这么大并发的连

SQLDebug_Fan的专栏 1万+

Delphi IOCP端口通信实例.rar

该源码是Delphi7写的一个IOCP简单例子,主要是演示IOCP的应用基础,以及帮助大家理解IOCP,便于初学者学习和理解IOCP到底是怎么一回事,是怎么实现网络通信的。 主程序由客户端和服务端组成,服务端完成端口操作定义、消息接收发送、建立通信通道等,相关定义可看代码:   TIocpOperate = (ioNone, ioCon, ioRead, ioWrite, ioStream, ioExit);   PIocpRecord = ^TIocpRecord;   TIocpRecord = record   Overlapped: TOverlapped; //完成ICOP端口重叠结构   WsaBuf: TWsaBuf; //完成端口的缓冲区定义   IocpOperate: TIOCPOperate; //当前操作类型   客户端就简单了,主要是连接服务端,建立通信,发消息等。

DELPHI版IOCP完整源码及实例

DELPHI版IOCP完整源码及实例,源码均有详细的中文说明。

DELPHI高性能大容量SOCKET并发:IOCP完成端口例子介绍

文章来源:http://blog.youkuaiyun.com/sqldebug_fan/article/details/7881793 例子主要包括IOCP控件封装、服务端实现、传输协议和日志、控制、SQL查询、上传、下载等协议实现,并包括一些初步的性能测试结果。 服务端: 界面截图如下: 提供服务和桌面方式运行,桌面方式可直接打开程序,方便日常调试,可以使用命令行注册或

$firecat利白的代码足迹$ 3393

delphi iocp控件

delphi iocp控件,比较简单的,便于学习,可以二次开发

DELPHI高性能大容量SOCKET并发(十):IOCP完成端口性能优化

IOCP性能优化主要是集中在每个处理接收数据和发送数据的对象锁,如果能降低锁的调用次数和提高锁的效率,对IOCP的整理效率和吞吐量都非常有帮助。有很多开发人员在优化IOCP的时候,对于如何提高锁的效率,有使用原子操作来加锁,这样做的效率比较调用Windows的锁效率,因而吞吐率也更高。我们不讨论提高锁的效率,我们这次的优化是降低锁的调用次数。 服务端优化 IOCP是异步线程通知方式,有

SQLDebug_Fan的专栏 9931

PPO实战:如何用强化学习让小车爬上MountainCarContinuous-v0山顶(附完整代码)

本文提供了使用PPO算法解决MountainCarContinuous-v0环境的完整实战教程。针对该环境的连续动作空间和稀疏奖励挑战,文章详细解析了PPO智能体的网络架构、状态归一化、GAE优势估计等核心实现,并附带了可直接运行的PyTorch代码。同时分享了关键的调参技巧和实战避坑指南,帮助读者高效训练智能体完成小车爬坡任务。

linux的博客 968

STM32F4_LCD显示汉字

LCD显示汉字和显示图片、数字、字符的原理是一样的,都是将汉字、图片、数字以及字符转换点阵,进而通过函数扫描点阵在LCD上显示;

light_2025的博客 1万+

高性能大容量SOCKET并发(二):IOCP完成端口控件封装

http://blog.youkuaiyun.com/sqldebug_fan/article/details/7884239 IOCP完成端口介绍: 完成端口模型是Windows平台下SOCKET端口模型最为复杂的一种I/O模型。如果一个应用程序需要同时管理为数众多的套接字,而且希望随着系统内安装的CPU数量的增多,应用程序的性能也可以线性提升,采用完成端口模型,往往可以达到最佳的系统性能。 完成

l799623787的专栏 1155

手把手教你用Matlab解析Zygo .dat文件:从二进制数据到面形图(附完整流程)

本文详细介绍了如何使用Matlab解析Zygo干涉仪生成的.dat文件,从二进制数据读取到面形图可视化的完整流程。通过实例代码演示了文件结构解析、数据矩阵读取、高阶Zernike拟合等关键技术,帮助工程师和研究人员高效处理光学检测数据,提升分析精度和工作效率。

weixin_30731305的博客 447

高性能的socket通讯服务器(完成端口模型--IOCP)

关键词:delphi socket通讯服务器例程(完成端口模型--IOCP)、I/O Completion Port、socket通讯登峰造极、IO重叠、 IOCP客户服务端         高性能的socket通讯服务器(完成端口模型--IOCP)       很多人费尽心思,都没有找到一个完美的 I/O CP 例程,甚至跟人于误解,先将本人编写的例程

码客 卢益贵 ygluu 1万+

保姆级教程:在Windows 11上用VSCode和Conda搞定Depth-Anything-3(含常见报错修复)

本文提供在Windows 11系统上使用VSCode和Conda配置Depth-Anything-3的完整教程,涵盖环境搭建、依赖安装、常见报错修复及深度图生成实战。特别针对CUDA与PyTorch版本匹配、Hugging Face镜像加速等关键问题提供解决方案,帮助开发者高效实现计算机视觉中的深度估计应用。

weixin_30338481的博客 346

【最全】ISTQB- FL模拟题(含答案)

汇总收集的所有ISTQB基础级考题和答案

maoxuexue的博客 1万+

使用IO完成端口IOCP与线程池创建高性能服务器

使用IO完成端口IOCP与线程池创建高性能服务器 在使用socket网络编程,实现一个服务器时,初学者最容易想到方法是当服务器监听的socket接受(accept)到一个客户端时创建一个线程,然后在线程中调用recv函数实时监控客户端是否有数据发送过来。这种方法是可以实现服务器对客户端数据的监听,但是这种方法效率很低,无法支持大量客户端同时连接。这种方法需要对每个连接的客户端创建一个线程,如果有...

Wlk1229 4466

数字后端零基础入门系列 | Innovus零基础LAB学习Day9

数字后端零基础入门系列 | Innovus零基础LAB学习Day9

weixin_37584728的博客 4577

[转]DELPHI中完成端口(IOCP)的简单分析

DELPHI中完成端口(IOCP)的简单分析 版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://fxh7622.blog.51cto.com/63841/7667 用DELPHI开发网络代码已经有一段时间了!我发现在网上用VC来实现完成端口(IOCP)的代码很多,但是使用DELPHI来实现的就比较少了。对IO...

dianxunzhang1095的博客 163

【HALCON工业视觉应用探索】02. C# + Halcon铸件毛刺机器人打磨引导:点云处理从实验室到工业现场的全流程落地

摘要:铸件毛刺的自动化打磨是机械制造领域的重要难题,其随机性(高度0.1-3mm)和复杂工况导致人工打磨效率低(3分钟/件)、工伤率高。本文基于Halcon 24.11与.NET 6,构建了一套点云处理方案:通过线激光扫描仪获取三维点云,经预处理、毛刺检测、路径规划三大模块,引导机器人完成打磨。虚拟实验测试显示,对高度>1mm的毛刺检出率达100%,定位误差±0.08mm,但工业现场受油污、粉尘影响,性能降至检出率68-75%、处理时间>45秒。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 1128

基于matlab不变矩的数字验证码识别系统

随着互联网技术的快速发展和应用,网络给人们提供了丰富的资源和极大的便利,但随之而来的是互联网系统的安全性问题,而验证码正是加强 Web 系统安全性的产物。全自动区分计算机和人类的图灵测试(Completely Automated Public Turing test to tell Computers and Humans Apart,CAPTCHA)也是验证码的一个应用程序,可以区分用户是人类还是计算机智能单击对象。

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 917

DELPHI中完成端口(IOCP)的简单分析(1)

用DELPHI开发网络代码已经有一段时间了!我发现在网上用VC来实现完成端口(IOCP)的代码很多,但是使用DELPHI来实现的就比较少了。对IOCP讲的清楚的就更少了。在这里我把自己编写DELPHI下的IOCP写出来,希望对刚学完成端口的朋友有个帮助。首先我们来了解一些在使用IOCP的时候需要使用的一些结构!(1):单IO数据结构  LPVOID = Pointer;  LPPE

1104

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

delphi之IOCP学习(一)

delphi之IOCP学习(一) 困扰已久的网络通信(IOCP:完成端口),今天终于揭开她的神秘面纱了,之前百度N久还是未能理解IOCP,网络上好多博文都没有贴出源码,初学者很难正在理解IOCP并自己写出通信例子 ,经过努力,今天自己终于做出了简单的测试程序,下面贴出源码,水平有限,难免有错,希望不要误人子弟。 1、Svr主窗体 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14...

yygyyygy1233的博客 476

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

是谁神化了IOCP——完成端口通讯服务器(IOCP Socket Server)设计(1)

完成端口通讯服务器(IOCP Socket Server)设计(一)是谁神化了IOCPCopyright © 2009 代码客(卢益贵)版权所有QQ:48092788   源码博客:http://blog.youkuaiyun.com/guestcodeWindows系统下的socket模型有多种,其中完成例程的效率也是相当高的,其它的也不差(相关模型知识这里不多做介绍,读者可以自己搜

码客 卢益贵 ygluu 8220

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

上一篇: 栈和堆
下一篇: DELPHI高性能大容量SOCKET并发(二):IOCP完成端口控件封装
SQLDebug_Fan
博客等级 码龄17年 710粉丝 26原创
评论 141
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值