GS文件
Published: Comment: No Comments
Last Modified:2026-11-06 03:27:55
SocketManager.h / SocketManager.cpp
主入口 ,TCP/IOCP 完成端口模型:`Start(port)` 监听、CreateListenSocket/CreateCompletionPort/CreateAcceptThread/CreateWorkerThread/CreateServerQueue、`WSAAccept` +`ServerAcceptCondition` 、`WSARecv/WSASend` 重叠 IO、`DataRecv/DataSend/Disconnect/OnRecv/OnSend` 、`ServerQueueThread` 把队列里解出的包丢给 ProtocolCore()`
SocketManagerUdp.h / SocketManagerUdp.cpp
UDP 通道,`Connect(ConnectServerAddress, ConnectServerPort)` 与 CS 通信用(`ConnectServerInfoSend` 周期性发送`SDHP_GAME_SERVER_LIVE_SEND` )
Connection.h / Connection.cpp
通用 TCP 客户端封装`CConnection` :`Connect/Disconnect/CheckState/DataRecv/DataSend/DataSendEx` ,基于`WSAEVENT` + 工作线程`SocketEventsThread` ,接收后回调`wsProtocolCore(head, lpMsg, size)`
JSProtocol.h / JSProtocol.cpp
JoinServer 协议:`JoinServerProtocolCore` 、`GJServerInfoSend` 、登录认证(账号密码走 JS 转发)
DSProtocol.h / DSProtocol.cpp
DataServer 协议:`DataServerProtocolCore` 、`GDServerInfoSend` 、角色/装备/仓库数据存取
Protocol.h / Protocol.cpp
`ProtocolCore(head, lpMsg, size, aIndex, encrypt, serial)` 客户端包主分发,处理登录(`CGConnectAccountRecv` )、角色选择、移动、攻击、聊天等所有 GS 业务包
ProtocolDefines.h
`PBMSG_HEAD/PWMSG_HEAD` 、加解密宏(`XOR` /`PACKET_ENCRYPT` /`PACKET_DECRYPT` )、序列号校验宏
PacketManager.h / PacketManager.cpp
C3/C4 包 Modulus 加解密(与客户端的 PacketManager.cpp 对应)
Util.h / Util.cpp
DataSend(aIndex, lpMsg, size) → 转发到gSocketManager.DataSend ;DataSendAll 、DataSendSocket 、Disconnect(aIndex) 等全局发包/踢人函数( 全服各业务模块都通过这里发包 )
GameMain.h / GameMain.cpp
定义`gJoinServerConnection` 、`gDataServerConnection` 全局对象,`GameMainInit` 、`JoinServerConnect/Reconnect` 、`DataServerConnect/Reconnect` 、`QueueTimerCallback`
GameServer.cpp
`WinMain` :`WSAStartup` →`gSocketManager.Start(authPort)` →`GameMainInit` →`JoinServerConnect` →`DataServerConnect` →`gSocketManagerUdp.Connect(...)`
- IpManager.h / IpManager.cpp :IP 连接数限制/封禁
- HackCheck.h / HackCheck.cpp 与 HackPacketCheck.h / HackPacketCheck.cpp :基于协议字段的反挂校验
- SerialCheck.h / SerialCheck.cpp :C3/C4 包 serial 序列号校验
- Queue.h / Queue.cpp :IOCP 工作线程 → 协议线程的包队列