ICS v9.5 OverbyteIcsWSocket.pas 整体架构分析

ICS组件中WSocketServer与WSocketClient收到数据示例 偶然一次得知了ICS组件在DELPHI7的应用较为稳定,于是找到了ICS组件,安装完成后,试验了一下,还是不错的。源码贴于下: unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls 阅读详情

核心发现:

  • 主要发布类:TWSocket(客户端/服务器通用)、TWSocketServer(专用TCP服务器)。
  • 设计原则:事件驱动、非阻塞,Reactor模式(消息泵处理多路复用),支持IPv4/IPv6/UDP/TCP/Raw,v9.5精简SSL(移至独立单元)。
  • 内部辅助:记录如TSockAddrIn6、TIcsSessIpInfo;无复杂多继承,组合为主。

1. 类的功能分析,包括函数、事件

OverbyteIcsWSocket.pas 定义的主要类(~10+类,焦点发布组件):

类名 主要功能 关键属性(Published) 关键方法(分类) 事件(部分)
TWSocket (核心类,~80%代码) TCP/UDP/Raw Socket封装;客户端:Connect;服务器:Listen(推荐用TWSocketServer);异步I/O、DNS、Socks、LineMode(行模式)。 Addr/Port(远程/监听);Proto(tcp/udp);State(wsClosed等);RcvdCount(接收缓冲);MultiThreaded。 连接:Connect/Listen/Accept/Close/Abort。 发送:Send/SendStr/SendTo/PutStringInSendBuffer。 接收:Receive/ReceiveStr/PeekData。 控制:DnsLookup/Flush/Pause/Resume/ThreadAttach。 OnDataAvailable、OnSessionConnected、OnDataSent、OnDnsLookupDone、OnBgException。
TWSocketServer (服务器专用,继承TWSocket) TCP多客户端服务器;自动创建/管理TWSocketClient;IP过滤(v9.5新)。 Client[]/ClientCount(客户端数组);MaxClients;ListenBacklog;IcsHosts(虚拟主机)。 监听:Listen/MultiListen。 管理:Close/MultiClose/RecheckSslCerts。 客户端:IsClient。 OnClientConnect、OnClientCreate、OnClientDisconnect、OnClientAcceptFilter(v9.5)。
TWSocketClient (内部/动态创建) 每个客户端连接实例;继承TWSocket,自动Free。 同TWSocket。 同TWSocket。 同TWSocket。
辅助类 (TCustomWSocket等) 基类:窗口消息处理;可选:TCustomSslWSocket(SSL,已分离)。 - MessagePump。 OnMessagePump。

功能亮点:

  • 缓冲管理:内部发送/接收缓冲,非阻塞。
  • v9.5新增:SessionIpInfo(IP/端口结构化);WSocketSockAddrToStr等工具函数。

2. 类间的继承关系

单继承链设计,易维护,可选扩展(预处理器定义)。

继承层次图(文本UML):

TComponent (VCL/FMX)
  ↓
TIcsWndControl  (消息窗口基类)
  ↓
TCustomWSocket  (核心异步逻辑)
  ↓ [可选: TCustomSocksWSocket, TCustomSslWSocket (v9分离)]
TCustomLineWSocket / TCustomSyncWSocket 等
  ↓ [可选: TCustomTimeoutWSocket, TCustomThrottledWSocket]
**TWSocket**  (发布组件)
  ↓
**TWSocketServer**  (服务器特化)
  ↓ [动态]
TWSocketClient  (每个连接)
子类 父类 特化点
TWSocketServer TWSocket +多客户端管理、Listen队列。
TWSocketClient TWSocket 运行时创建,自动生命周期。
TCustomWSocket TIcsWndControl 消息泵(Reactor)。

证据:Wiki文档确认TWSocketServer inherits from TWSocket。


3. 类间的协作关系

组合/聚合为主,无紧耦合;依赖外部单元(OverbyteIcsTypes.pas等)。

关系类型 示例 描述
聚合 (Aggregation) TWSocketServer → Client[]: TWSocketClient 服务器持有客户端数组,索引访问(Client[Index]),自动创建/销毁。
组合 (Composition) TWSocket → 内部缓冲 (TWSockBufList) 发送/接收缓冲,生命周期绑定。
依赖 (Dependency) TWSocket → IcsLogger 日志:IcsLogger.LogEvent。
关联 (Association) TWSocketServer → IcsHosts 虚拟主机:多IP/端口/SSL配置。
使用 (Uses) 所有 → TSockAddrIn6 / TIcsSessIpInfo 地址结构,v9.5 IP过滤。

协作流程:

  1. TWSocketServer.Listen → Accept连接 → new TWSocketClient(ClientClass)。
  2. 客户端事件 → TWSocketClient.OnDataAvailable → 服务器OnClientConnect处理。
  3. 线程安全:ThreadAttach/Detach 跨线程迁移。

外部协作:协议层(THttpCli uses TWSocket)继承/持有。


4. 事件的触发条件,该事件处理什么

事件驱动核心:Windows消息 → 内部泵 → 触发事件。

事件 触发条件 处理内容 所属类
OnDataAvailable 接收缓冲有数据(TCP:数据到达;UDP:数据包;LineMode:遇LineEnd)。 读取数据:调用Receive/ReceiveStr;解析协议
ICS v9.5下的OverbyteIcsWSocketS.pas类间关系图解 该摘要详细介绍了ICS V9.5组件中的网络服务器类结构和使用方法。主要包含: TWSocketServer核心类及其继承关系,包括SSL扩展类TSslWSocketServer; 类间关系分析,包括继承、组合和依赖关系; V9.5版本新增特性,如IP过滤和SSL代码分离; 一个完整的回显服务器Demo实现,包含组件配置和事件处理代码; 测试方法说明,包括本地telnet和多客户端测试。 该摘要特别突出了V9.5版本的新变化,并提供了一个"5分钟上手"的实用教程,通过简洁的代码示例展示了 阅读详情

相关推荐

Delphi开发者专用ICS网络控件完整包OverbyteIcsV8Gold

Delphi作为一款历史悠久的集成开发环境(IDE),在面向对象的编程领域中具有重要地位。它不仅提供了丰富的工具和组件,还支持开发健壮的网络应用程序。本章将介绍Delphi网络编程组件库的概览,涵盖组件库如何帮助开发者构建高效、安全的网络解决方案。网络编程组件库是Delphi中的一个功能强大的集合,它包括了各种用于网络通信的组件,例如TCP/IP、HTTP/HTTPS和FTP等协议的实现。开发者通过这些组件可以轻松地创建客户端和服务器应用程序,无论是简单的连接还是复杂的应用程序间通信。

weixin_42509888的博客 1059

OverbyteIcsV8

OverbyteIcsV8Gold强大的网络组件套件,比INDY、Clever_Internet_Suite 更实用, 已试过,支持XE8

OverbyteICS V7.20

OverbyteIcsV7_7.20.zip

OverByte.ICS.WSocket.V6.RC1(SSL Enabled)

Overbyte 发布的Ics套件V6 Release Candidate 1版本,加入了SSL(OpenSSL)支持.

OverbyteIcsV7

The Internet Component Suite is composed of various Internet components and applications. It is distributed as freeware with full source code for all Delphi and C++Builder versions. The sample applications exists in two forms: Object Pascal for Delphi and C++ for C++Builder. The components are written in Object Pascal native VCL which can be compiled by Delphi as well as C++Builder. There is a wiki under construction here where you'll find valuable documentation. Below you'll find the links to download ICS/ICS-SSL distribution archives. You can find the latest source on the version control repository and an archive extracted daily from the repository here: ICS-V6, ICS-V7. We use SubVersion server and you need to use a subversion client such as TortoiseSVN. Once your SVN client is installed, for ICS-V6 you can browse to svn://svn.overbyte.be/ics or http://svn.overbyte.be:8443/svn/ics or for ICS-V5 to: svn://svn.overbyte.be/icsv5 or http://svn.overbyte.be:8443/svn/icsv5. ICS-V7 is a part of V6, in ics/branches/icsv7. All use usercode = ics and password = ics for read access. Write access is only available to TeamICS.

Overbyte ICS v834

最新版的ics支持d7-xe10.1,还支持OpenSSL-Win32 主要控件请见OverbyteIcsReg.pas uses {$IFDEF FMX} FMX.Types, Ics.Fmx.OverbyteIcsWndControl, Ics.Fmx.OverbyteIcsWSocket, Ics.Fmx.OverbyteIcsDnsQuery, Ics.Fmx.OverbyteIcsFtpCli, Ics.Fmx.OverbyteIcsFtpSrv, Ics.Fmx.OverbyteIcsMultipartFtpDownloader, Ics.Fmx.OverbyteIcsHttpProt, Ics.Fmx.OverbyteIcsHttpSrv, Ics.Fmx.OverbyteIcsMultipartHttpDownloader, Ics.Fmx.OverbyteIcsHttpAppServer, Ics.Fmx.OverbyteIcsCharsetComboBox, Ics.Fmx.OverbyteIcsPop3Prot, Ics.Fmx.OverbyteIcsSmtpProt, Ics.Fmx.OverbyteIcsNntpCli, Ics.Fmx.OverbyteIcsFingCli, Ics.Fmx.OverbyteIcsPing, {$IFDEF USE_SSL} Ics.Fmx.OverbyteIcsSslSessionCache, Ics.Fmx.OverbyteIcsSslThrdLock, {$ENDIF} Ics.Fmx.OverbyteIcsWSocketE, Ics.Fmx.OverbyteIcsWSocketS, {$ENDIF FMX} {$IFDEF VCL} Controls, OverbyteIcsWndControl, OverbyteIcsWSocket, OverbyteIcsDnsQuery, OverbyteIcsFtpCli, OverbyteIcsFtpSrv, OverbyteIcsMultipartFtpDownloader, OverbyteIcsHttpProt, OverbyteIcsHttpSrv, OverbyteIcsMultipartHttpDownloader, OverbyteIcsHttpAppServer, OverbyteIcsCharsetComboBox, OverbyteIcsPop3Prot, OverbyteIcsSmtpProt, OverbyteIcsNntpCli, OverbyteIcsFingCli, OverbyteIcsPing, {$IFDEF USE_SSL} OverbyteIcsSslSessionCache, OverbyteIcsSslThrdLock, {$ENDIF} OverbyteIcsWSocketE, OverbyteIcsWSocketS, OverbyteIcsSysLogClient, OverbyteIcsSysLogServer, OverbyteIcsSnmpCli, OverbyteIcsSmtpSrv, // VCL only OverbyteIcsMultiProgressBar, OverbyteIcsEmulVT, OverbyteIcsTnCnx, OverbyteIcsTnEmulVT, OverbyteIcsTnScript, {$IFNDEF BCB} OverbyteIcsWSocketTS, {$ENDIF} {$ENDIF VCL} {$IFDEF ICS_COMMON} OverbyteIcsMimeDec, OverbyteIcsMimeUtils, OverbyteIcsTimeList, OverbyteIcsLogger, {$IFNDEF BCB} OverbyteIcsCookies, {$ENDIF !BCB} {$ENDIF} {$IFDEF RTL_NAMESPACES}System.SysUtils{$ELSE}SysUtils{$ENDIF}, {$IFDEF RTL_NAMESPACES}System.Classes{$ELSE}Classes{$ENDIF}; procedure Register; implementation

基于Delphi开发并集成OverbyteICS控件实现MQTT协议V31的服务器与客户端应用程序_支持消息订阅与发布功能但未实现GetRetain特性_通过Broker进行稳.zip

基于Delphi开发并集成OverbyteICS控件实现MQTT协议V31的服务器与客户端应用程序_支持消息订阅与发布功能但未实现GetRetain特性_通过Broker进行稳.zip

ICS-Internet Component Suite v95 FS 完整源码版.7z

ICS-Internet Component Suite v95.zip 是 François Piette 团队 2025-08 发布的最新长期支持版(V9.5)源码包,专为 Delphi 7-12 Athens & C++Builder 10.2-12 设计,同时支持 Win32/64、macOS、POSIX(FMX/VCL 均可)。 协议全家桶:TCP/UDP、HTTP/HTTPS、FTP、SMTP、POP3、IMAP、NNTP、WebSocket、OAuth2、SSL/TLS(OpenSSL 3 已内置)。 零依赖:纯 Pascal 源码,无 DLL,编译即运行;附带 100+ 预编译示例,可秒测客户端/服务器代码。 新亮点 V9.5:应用监控组件(自动重启崩溃服务)、IPv6 双栈、HTTP/2、局域网设备发现、证书自动续期,适合写 高并发网关、IoT 边缘采集、REST 服务器。 ICS 可以让你用最轻量的源码把 网络协议栈 塞进 Delphi,解压源码包,三分钟就能跑起 HTTPS 服务器!

Delphi 13控件之Delphi 13控件之ICS-Internet Component Suite v95.zip

Delphi 13控件之Delphi 13控件之ICS-Internet Component Suite v95.zip

Delpjhi 13控件之ICS-Internet Component Suite v95.zip

Delpjhi 13控件之ICS-Internet Component Suite v95.zip

Clever Internet Suite_v9.6.925.0 (October 27, 2020).rar

Clever Internet Suite_v9.6.925.0 (October 27, 2020)Clever Internet Suite 9.4是功能强大的组件套件,为您提供了快速启动Internet开发所需的一切,而没有任何外部依赖性。 Internet组件套件包含五十多个不断完善和改进的组件。使用Clever Internet Suite组件,您可以使用多个文件附件来编写和解析MIME格式的消息,构建和发送Web Form POST请求以及许多其他功能。SMTP,POP3和IMAP客户端允许您通过Internet发送和检索电子邮件。所有服务器组件均代表功能齐全的多线程服务器

OverbyteIcsV8Gold D7 - XE8

OverbyteIcsV8Gold D7 - XE8

状态机与RTOS的融合实践:如何避免‘状态爆炸’并提升系统响应

本文探讨了状态机与RTOS的融合实践,重点介绍了如何通过层次化状态机、表驱动设计等策略避免状态爆炸问题,并优化任务调度与事件处理机制,从而显著提升嵌入式系统的响应速度和可靠性。

net55的博客 104

verilog CORDIC对数运算

verilog CORDIC对数运算

m0_64355812的博客 1732

系统安装、qt配置、安装pcie驱动

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 安装Linux系统指定:ununtu20.04并配置相关软件环境 前言 提示:这里可以添加本文要记录的大概内容: ununtu20.04、Qt 5.9.0、pcie驱动 提示:以下是本篇文章正文内容,下面案例可供参考 一、安装系统 制作系统盘(win10),在开机时按相应键进入BIOS,(华硕需要先改配置启动->CSM->开启->第一个选项选第一个或第二个),等待即可 进入后按照https://www.sysgeek.

weixin_44832804的博客 2200

MOS 管驱动设计细节,波形分析

一般认为MOSFET是电压驱动的,不需要驱动电流。然而,在MOS的G S两级之间有结电容存在,这个电容会让驱动MOS变的不那么简单。 如果不考虑纹波和EMI等要求的话,MOS管开关速度越快越好,因为开关时间越短,开关损耗越小,而在开关电源中开关损耗占总损耗的很大一部分,因此MOS管驱动电路的好坏直接决定了电源的效率。 对于一个MOS管,如果把GS之间的电压从0拉到管子的开启电压所用的时间越短,那么MOS管开启的速度就会越快。与此类似,如果把MOS管的GS电压从开启电压降到0V的时间越短,那么MOS管关断的

m0_50862404的博客 1万+

【数据分享】中国371个城市的坡度矢量数据和excel数据

在城市发展的进程中,地形地貌始终是影响规划决策的关键因素,而坡度作为表征地表倾斜程度的核心指标,更是贯穿于城市建设、生态保护等诸多环节。本文将全面解读中国 371 个城市坡度数据的相关情况,包括数据概况、生成流程、应用场景等内容,为读者呈现一份详尽的坡度数据指南。

qq_39719713的博客 1839

Linux运维人,该醒醒了,2019年要变天了

外界都说运维只是处于被动低效率手工救火的状态,企业对其重视程度不高,提起运维很多人能联想到的字眼就有“苦逼”、“辛苦”、“加班”、“背锅”。在大数据、人工智能、容器技术的强力加持下,运维这个传统的技术工种已经从“机械劳动”这样的刻板印象中蜕变出来,成为了任何一家技术公司所必须依赖和大力投入的核心技术能力。 现在,运维人员的发展前景也开始让很多程序员眼羡,作为Linux运维人员的你:这一年,你的L...

qq_43083284的博客 1万+

“华为杯”研究生数学建模竞赛2016年-【华为杯】A题:多无人机协同任务规划

题分别求解,保证了攻击方无人机滞留在防御方雷达有效探测范围内的时间总和最小,接着,通过提出巡检待命无人机的设想,型无人机携带炸弹的具体清单和攻击的目标清单),保证攻击方的无人机滞留防御方雷。在使用基于贪心算法的覆盖法时,覆盖的目标点中必须首先不含配备雷达站的目标点。步优化保证攻击方的无人机滞留防御方雷达有效探测范围内的时间总和最小,需首先。的“灵巧”炸弹,采用抛投方式对地攻击,即投放后炸弹以飞机投弹时的速度作抛物。运动,当炸弹接近目标后,可主动寻的攻击待打击的目标,因此炸弹落点位于目标中。

getusushu的博客 1031

【30天从零玩转AI应用开发】第16篇:智能体Agent入门——ReAct框架原理+首个会思考、会动手的AI实战

摘要: 本文介绍了AI智能体(Agent)的核心概念及其与普通大模型(LLM)的区别。通过ReAct(Reason+Act)框架,智能体实现了自主思考、调用工具和分步执行的能力。文章详细讲解了LangChain Agent的四大组件,并推荐新手使用ZERO_SHOT_REACT_DESCRIPTION类型。最后提供了一个完整的智能体实战代码示例,该智能体具备数学计算和天气查询功能,能够自主选择工具完成任务,展示了AI从”被动回答“到”主动行动“的关键进化。

在上海谋生的软件喵记录喵生 621

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

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

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

上一篇: windows下GetMessage和PeekMessage函数区别
下一篇: ICS v9.5下的OverbyteIcsWSocketS.pas类间关系图解
sonadorje
博客等级 码龄17年 101粉丝 210原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值