核心发现:
- 主要发布类: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过滤。 |
协作流程:
- TWSocketServer.Listen → Accept连接 → new TWSocketClient(ClientClass)。
- 客户端事件 → TWSocketClient.OnDataAvailable → 服务器OnClientConnect处理。
- 线程安全:ThreadAttach/Detach 跨线程迁移。
外部协作:协议层(THttpCli uses TWSocket)继承/持有。
4. 事件的触发条件,该事件处理什么
事件驱动核心:Windows消息 → 内部泵 → 触发事件。
| 事件 | 触发条件 | 处理内容 | 所属类 |
|---|---|---|---|
| OnDataAvailable | 接收缓冲有数据(TCP:数据到达;UDP:数据包;LineMode:遇LineEnd)。 | 读取数据:调用Receive/ReceiveStr;解析协议 |
1059




被折叠的 条评论
为什么被折叠?



