{"id":22053,"date":"2025-04-19T05:22:09","date_gmt":"2025-04-18T21:22:09","guid":{"rendered":"https:\/\/www.wsisp.com\/helps\/22053.html"},"modified":"2025-04-19T05:22:09","modified_gmt":"2025-04-18T21:22:09","slug":"%e3%80%90%e6%b8%b8%e6%88%8f%e6%a1%86%e6%9e%b6%e3%80%91%e5%a4%9a%e8%bf%9b%e7%a8%8b%e6%9c%8d%e5%8a%a1%e5%99%a8","status":"publish","type":"post","link":"https:\/\/www.wsisp.com\/helps\/22053.html","title":{"rendered":"\u3010\u6e38\u620f\u6846\u67b6\u3011\u591a\u8fdb\u7a0b\u670d\u52a1\u5668"},"content":{"rendered":"<h2>\u67b6\u6784\u56fe<\/h2>\n<p><img decoding=\"async\" src=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2025\/04\/20250418212205-6802c27d67230.png\" alt=\"\" \/><\/p>\n<h3>gateway<\/h3>\n<p><img decoding=\"async\" src=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2025\/04\/20250418212205-6802c27dcc395.png\" alt=\"\" \/><\/p>\n<ul>\n<li>engineadapter<\/li>\n<li>internalcomm<\/li>\n<li>networkpackstat<\/li>\n<li>gatewaymodule<\/li>\n<\/ul>\n<h4>engineadapter<\/h4>\n<p>\u4e3b\u8981\u5de5\u4f5c\u662f\u5c01\u88c5\u8c03\u7528\u4e86\u51e0\u4e2a\u5e93\u7684\u4e00\u4e9b\u529f\u80fd&#xff0c;\u63d0\u4f9b\u63a5\u53e3\u7ed9\u5916\u90e8\u4f7f\u7528\u3002<\/p>\n<p>&#8211; \u91cc\u9762\u8c03\u7528\u5230\u7684\u5c01\u88c5\u7684\u5e93\u6709&#xff1a;IConfigModule\u3001IGameModule\u3001INetworkModule\u3001IClockModule\u3001ILogModule\u3002<br \/>\n&#8211; \u63d0\u4f9b\u5bf9\u5916\u7684\u63a5\u53e3\u6709&#xff1a;NetListen()\u3001NetConnect()\u3001NetSend()\u3001NetDisconnect()\u3001GetLogModule()&#xff0c;\u8fd9\u4e9b\u63a5\u53e3\u5b9e\u9645\u7528\u5230\u7684\u662fm_network\u6a21\u5757\u7684\u65b9\u6cd5\u3002<\/p>\n<h4>internalcomm<\/h4>\n<p>\u4e3b\u8981\u5de5\u4f5c\u662f\u5185\u90e8\u670d\u52a1\u95f4\u7684\u7f51\u7edc\u63a5\u53e3\u5c01\u88c5\u3002NetListen\/NetConnect\/NetSend\/NetDisconnect&#xff0c;\u5b9e\u9645\u7528\u5230\u7684\u662fm_internal_network\u91cc\u9762\u7684\u65b9\u6cd5\u3002<\/p>\n<h4>networkpackstat<\/h4>\n<p>\u4e3b\u8981\u5de5\u4f5c\u662f<\/p>\n<p>&#8211; \u5bf9\u5916\u63a5\u53e3Init\u3001Update\u3001Stat\u3001CheckMsgSize<br \/>\n&#8211; \u7ef4\u62a4m_pack_list&#xff0c;\u7f51\u7edc\u5305\u5217\u8868&#xff0c;\u6bcf\u4e2a\u7f51\u7edc\u5305\u72b6\u6001<br \/>\n&#8211; m_last_check_time\u6700\u540e\u68c0\u67e5\u65f6\u95f4<\/p>\n<h4>gatewaymodule<\/h4>\n<p>\u4e3b\u8981\u5de5\u4f5c\u662f\u5c01\u88c5\u4e86\u672c\u6a21\u5757\u7684\u4e00\u4e9b\u65b9\u6cd5&#xff0c;\u65b9\u6cd5\u4e3b\u8981\u5de5\u4f5c&#xff1a;<\/p>\n<p>&#8211; \u2460 \u63d0\u4f9b\u63a5\u53e3\u5206\u522b\u8fde\u63a5\u5230chatserver\u3001loginserver\u3001globalserver\u3001logicserver\u3001\u548c\u591a\u4e2aclient&#xff08;m_user_list&#xff09;\u3002<br \/>\n&#8211; \u2461 \u6ce8\u518c\u56de\u8c03\u65b9\u6cd5&#xff0c;**&#096;&lt;font style&#061;&#034;color:#DF2A3F;&#034;&gt;&#096;\u6536\u5230\u5ba2\u6237\u7aef\u7f51\u7edc\u8fde\u63a5\u540e&#xff08;ServerNetworkCallback&#xff09;&#096;&lt;\/font&gt;&#096;**<\/p>\n<p>m_network_callback <span class=\"token operator\">&#061;<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token function\">ServerNetworkCallback<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">this<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\nm_network<span class=\"token operator\">-&gt;<\/span><span class=\"token function\">RegisterCallback<\/span><span class=\"token punctuation\">(<\/span>m_network_callback<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><\/p>\n<p><span class=\"token keyword\">class<\/span> <span class=\"token class-name\">ServerNetworkCallback<\/span> <span class=\"token operator\">:<\/span> <span class=\"token base-clause\"><span class=\"token keyword\">public<\/span> <span class=\"token class-name\">IEngineNetCallback<\/span><\/span><br \/>\n<span class=\"token punctuation\">{<\/span><br \/>\n<span class=\"token keyword\">public<\/span><span class=\"token operator\">:<\/span><br \/>\n<span class=\"token function\">ServerNetworkCallback<\/span><span class=\"token punctuation\">(<\/span>GatewayModule <span class=\"token operator\">*<\/span>gateway<span class=\"token punctuation\">)<\/span><span class=\"token operator\">:<\/span><span class=\"token function\">m_gateway<\/span><span class=\"token punctuation\">(<\/span>gateway<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span>  <span class=\"token function\">m_cur_connect_num<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token keyword\">virtual<\/span> <span class=\"token operator\">~<\/span><span class=\"token function\">ServerNetworkCallback<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token keyword\">virtual<\/span> <span class=\"token keyword\">void<\/span> <span class=\"token function\">OnAccept<\/span><span class=\"token punctuation\">(<\/span>Port listen_port<span class=\"token punctuation\">,<\/span> NetID netid<span class=\"token punctuation\">,<\/span> IP ip<span class=\"token punctuation\">,<\/span> Port port<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token keyword\">virtual<\/span> <span class=\"token keyword\">void<\/span> <span class=\"token function\">OnRecv<\/span><span class=\"token punctuation\">(<\/span>NetID netid<span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">const<\/span> <span class=\"token keyword\">char<\/span> <span class=\"token operator\">*<\/span>data<span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">int<\/span> length<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token keyword\">virtual<\/span> <span class=\"token keyword\">void<\/span> <span class=\"token function\">OnDisconnect<\/span><span class=\"token punctuation\">(<\/span>NetID netid<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token keyword\">virtual<\/span> <span class=\"token keyword\">void<\/span> <span class=\"token function\">OnConnect<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">bool<\/span> result<span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">int<\/span> handle<span class=\"token punctuation\">,<\/span> NetID netid<span class=\"token punctuation\">,<\/span> IP ip<span class=\"token punctuation\">,<\/span> Port port<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">;<\/span><\/p>\n<p>***OnAccept()**&#xff1a;\u7ef4\u62a4\u5ba2\u6237\u7aef\u8fde\u63a5&#xff08;m_user_list&#xff09;\u3002<br \/>\n    * **OnRecv()**&#xff1a;OnRecvUserMsg()&#xff0c;\u6839\u636e\u534f\u8bae\u5185\u5bb9&#xff0c;\u65ad\u5f00\u8fde\u63a5&#xff0c;\u5c06\u6d88\u606f\u8f6c\u53d1\u7ed9chatserver\/loginserver\/globalserver\/logicserver\u3002<br \/>\n    * **OnDisconnect()**&#xff1a;\u5ba2\u6237\u7aef\u65ad\u5f00\u8fde\u63a5&#xff0c;m_user_list\u7ef4\u62a4\u4e00\u4e0b\u3002<br \/>\n    * **OnConnect()**&#xff1a;\u7a7a\u3002<br \/>\n&#8211; \u2462 \u6ce8\u518c\u56de\u8c03\u65b9\u6cd5&#xff0c;**&#096;&lt;font style&#061;&#034;color:#DF2A3F;&#034;&gt;&#096;\u6536\u5230\u5185\u90e8\u7f51\u7edc\u8fde\u63a5\u540e&#xff08;ServerInternalNetCallback&#xff09;&#096;&lt;\/font&gt;&#096;**<\/p>\n<p>m_internal_network_callback <span class=\"token operator\">&#061;<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token function\">ServerInternalNetCallback<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">this<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\nm_internal_network<span class=\"token operator\">-&gt;<\/span><span class=\"token function\">RegisterCallback<\/span><span class=\"token punctuation\">(<\/span>m_internal_network_callback<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><\/p>\n<p><span class=\"token keyword\">class<\/span> <span class=\"token class-name\">ServerInternalNetCallback<\/span> <span class=\"token operator\">:<\/span> <span class=\"token base-clause\"><span class=\"token keyword\">public<\/span> <span class=\"token class-name\">IEngineNetCallback<\/span><\/span><br \/>\n<span class=\"token punctuation\">{<\/span><br \/>\n<span class=\"token keyword\">public<\/span><span class=\"token operator\">:<\/span><br \/>\n<span class=\"token function\">ServerInternalNetCallback<\/span><span class=\"token punctuation\">(<\/span>GatewayModule <span class=\"token operator\">*<\/span>gateway<span class=\"token punctuation\">)<\/span><span class=\"token operator\">:<\/span><span class=\"token function\">m_gateway<\/span><span class=\"token punctuation\">(<\/span>gateway<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token function\">m_reconnet_login_handle<\/span><span class=\"token punctuation\">(<\/span><span class=\"token operator\">&#8211;<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token keyword\">virtual<\/span> <span class=\"token operator\">~<\/span><span class=\"token function\">ServerInternalNetCallback<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token keyword\">void<\/span> <span class=\"token function\">SetAllowIpPrefix<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">const<\/span> std<span class=\"token operator\">::<\/span>string <span class=\"token operator\">&amp;<\/span>allow_ip_prefix<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span> m_allow_ip_prefix <span class=\"token operator\">&#061;<\/span> allow_ip_prefix<span class=\"token punctuation\">;<\/span> <span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token keyword\">virtual<\/span> <span class=\"token keyword\">void<\/span> <span class=\"token function\">OnAccept<\/span><span class=\"token punctuation\">(<\/span>Port listen_port<span class=\"token punctuation\">,<\/span> NetID netid<span class=\"token punctuation\">,<\/span> IP ip<span class=\"token punctuation\">,<\/span> Port port<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token keyword\">virtual<\/span> <span class=\"token keyword\">void<\/span> <span class=\"token function\">OnRecv<\/span><span class=\"token punctuation\">(<\/span>NetID netid<span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">const<\/span> <span class=\"token keyword\">char<\/span> <span class=\"token operator\">*<\/span>data<span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">int<\/span> length<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token keyword\">virtual<\/span> <span class=\"token keyword\">void<\/span> <span class=\"token function\">OnDisconnect<\/span><span class=\"token punctuation\">(<\/span>NetID netid<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token keyword\">virtual<\/span> <span class=\"token keyword\">void<\/span> <span class=\"token function\">OnConnect<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">bool<\/span> result<span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">int<\/span> handle<span class=\"token punctuation\">,<\/span> NetID netid<span class=\"token punctuation\">,<\/span> IP ip<span class=\"token punctuation\">,<\/span> Port port<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">;<\/span><\/p>\n<p>***OnAccept()**&#xff1a;\u7ef4\u62a4\u5185\u90e8\u670d\u52a1\u8fde\u63a5&#xff08;m_gs_list\u3001m_login_server_id\u3001m_chat_server_id\u3001m_global_server_id&#xff09;\u3002<br \/>\n    * **OnRecv()**&#xff1a;OnRecvGSMsg\u6839\u636e\u534f\u8bae\u5185\u5bb9&#xff0c;\u662f\u5426\u5355\u53d1\u3001\u591a\u53d1\u3001\u65ad\u5f00\u8fde\u63a5\u3001\u68c0\u67e5\u7b49&#xff0c;OnRecvSend\/OnRecvMulSend\/OnRecvSendAll\/OnRecvDisconnect\/OnHasCheck\u3002<br \/>\n    * **OnDisconnect()**&#xff1a;\u5185\u90e8\u670d\u52a1\u8fde\u63a5\u65ad\u5f00&#xff0c;\u7ef4\u62a4\u4e0bm_user_list\/m_login_server_id\/m_chat_server_id\/m_global_server_id&#xff0c;\u7f6e\u7a7a\u4e3a-1\u3002<br \/>\n    * **OnConnect()**&#xff1a;\u7ef4\u62a4\u4e0bm_user_list\/m_login_server_id\/m_chat_server_id\/m_global_server_id\u3002<\/p>\n<h3>logicserver<\/h3>\n<p><img decoding=\"async\" src=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2025\/04\/20250418212205-6802c27df1660.png\" alt=\"\" \/><\/p>\n<ul>\n<li>engineadapter<\/li>\n<li>internalcomm<\/li>\n<li>loginservermodule<\/li>\n<\/ul>\n<h4>engineadapter<\/h4>\n<p>\u4e3b\u8981\u5de5\u4f5c\u662f\u5c01\u88c5\u8c03\u7528\u4e86\u51e0\u4e2a\u5e93\u7684\u4e00\u4e9b\u529f\u80fd&#xff0c;\u63d0\u4f9b\u63a5\u53e3\u7ed9\u5916\u90e8\u4f7f\u7528\u3002<\/p>\n<p>&#8211; \u91cc\u9762\u8c03\u7528\u5230\u7684\u5c01\u88c5\u7684\u5e93\u6709&#xff1a;IConfigModule\u3001IGameModule\u3001INetworkModule\u3001IClockModule\u3001ILogModule\u3002<br \/>\n&#8211; \u63d0\u4f9b\u5bf9\u5916\u7684\u63a5\u53e3\u6709&#xff1a;NetListen()\u3001NetConnect()\u3001NetSend()\u3001NetDisconnect()\u3001GetLogModule()&#xff0c;\u8fd9\u4e9b\u63a5\u53e3\u5b9e\u9645\u7528\u5230\u7684\u662fm_network\u6a21\u5757\u7684\u65b9\u6cd5\u3002<\/p>\n<h4>internalcomm<\/h4>\n<p>\u4e3b\u8981\u5de5\u4f5c\u662f\u5185\u90e8\u670d\u52a1\u95f4\u7684\u7f51\u7edc\u63a5\u53e3\u5c01\u88c5\u3002NetListen\/NetConnect\/NetSend\/NetDisconnect&#xff0c;\u5b9e\u9645\u7528\u5230\u7684\u662fm_internal_network\u91cc\u9762\u7684\u65b9\u6cd5\u3002<\/p>\n<h4>loginservermodule<\/h4>\n<p>&#8211; \u2460 \u63d0\u4f9b\u63a5\u53e3\u5206\u522b\u76d1\u542cListenForGlobalServer\u3001ListenForGameServer\u3001ListenForGateWay\u3001ListenForUser\u3002<br \/>\n&#8211; \u2461 \u63d0\u4f9b\u63a5\u53e3\u8fde\u63a5\u5230\u6570\u636e\u5e93ConnectToDB\u3002<br \/>\n&#8211; \u2462 \u6ce8\u518c\u56de\u8c03\u65b9\u6cd5&#xff0c;**&#096;&lt;font style&#061;&#034;color:#DF2A3F;&#034;&gt;&#096;\u6536\u5230\u5ba2\u6237\u7aef\u7f51\u7edc\u8fde\u63a5\u540e&#xff08;ServerNetworkCallback&#xff09;&#096;&lt;\/font&gt;&#096;**<\/p>\n<p>m_network_callback <span class=\"token operator\">&#061;<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token function\">ServerNetworkCallback<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">this<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\nm_network<span class=\"token operator\">-&gt;<\/span><span class=\"token function\">RegisterCallback<\/span><span class=\"token punctuation\">(<\/span>m_network_callback<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><\/p>\n<p><span class=\"token keyword\">class<\/span> <span class=\"token class-name\">ServerNetworkCallback<\/span> <span class=\"token operator\">:<\/span> <span class=\"token base-clause\"><span class=\"token keyword\">public<\/span> <span class=\"token class-name\">IEngineNetCallback<\/span><\/span><br \/>\n<span class=\"token punctuation\">{<\/span><br \/>\n<span class=\"token keyword\">public<\/span><span class=\"token operator\">:<\/span><br \/>\n<span class=\"token function\">ServerNetworkCallback<\/span><span class=\"token punctuation\">(<\/span>LoginServerModule <span class=\"token operator\">*<\/span>server<span class=\"token punctuation\">)<\/span><span class=\"token operator\">:<\/span><span class=\"token function\">m_server<\/span><span class=\"token punctuation\">(<\/span>server<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token function\">m_cur_connect_num<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token operator\">~<\/span><span class=\"token function\">ServerNetworkCallback<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token keyword\">virtual<\/span> <span class=\"token keyword\">void<\/span> <span class=\"token function\">OnAccept<\/span><span class=\"token punctuation\">(<\/span>Port listen_port<span class=\"token punctuation\">,<\/span> NetID netid<span class=\"token punctuation\">,<\/span> IP ip<span class=\"token punctuation\">,<\/span> Port port<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token keyword\">virtual<\/span> <span class=\"token keyword\">void<\/span> <span class=\"token function\">OnRecv<\/span><span class=\"token punctuation\">(<\/span>NetID netid<span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">const<\/span> <span class=\"token keyword\">char<\/span> <span class=\"token operator\">*<\/span>data<span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">int<\/span> length<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token keyword\">virtual<\/span> <span class=\"token keyword\">void<\/span> <span class=\"token function\">OnDisconnect<\/span><span class=\"token punctuation\">(<\/span>NetID netid<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token keyword\">virtual<\/span> <span class=\"token keyword\">void<\/span> <span class=\"token function\">OnConnect<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">bool<\/span> result<span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">int<\/span> handle<span class=\"token punctuation\">,<\/span> NetID netid<span class=\"token punctuation\">,<\/span> IP ip<span class=\"token punctuation\">,<\/span> Port port<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">;<\/span><\/p>\n<p>***OnAccept()**&#xff1a;\u7ef4\u62a4\u5ba2\u6237\u7aef\u8fde\u63a5&#xff08;m_connect_list&#xff09;\u3002<br \/>\n    * **OnRecv()**&#xff1a;LoginServer::Instance().OnRecv()\u6839\u636e\u534f\u8bae\u7c7b\u578b\u533a\u5206\u6267\u884c\u54ea\u79cd\u767b\u9646\u903b\u8f91&#xff08;OnLoginReq\/OnRoleReq\/OnPassAntiWallow\/OnPassAntiWallowEX\/OnCreateRole\/OnDestroyRole\/OnOldRoleListReq\/OnOldRoleRecoverReq&#xff09;&#xff1b;\u66f4\u65b0m_connect_list[netid].last_active_time \u3002<br \/>\n    * **OnDisconnect()**&#xff1a;LoginServer::Instance().OnDisconnect()&#xff1b;m_connect_list\u7ef4\u62a4\u4e00\u4e0b&#xff08;m_connect_list[netid].Reset()&#xff09;\u3002<br \/>\n    * **OnConnect()**&#xff1a;\u7a7a\u3002<br \/>\n&#8211; \u2463 \u6ce8\u518c\u56de\u8c03\u65b9\u6cd5&#xff0c;**&#096;&lt;font style&#061;&#034;color:#DF2A3F;&#034;&gt;&#096;\u6536\u5230\u5185\u90e8\u7f51\u7edc\u8fde\u63a5\u540e&#xff08;ServerInternalNetCallback&#xff09;&#096;&lt;\/font&gt;&#096;**<\/p>\n<p>m_internal_network_callback <span class=\"token operator\">&#061;<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token function\">ServerInternalNetCallback<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">this<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\nm_internal_network<span class=\"token operator\">-&gt;<\/span><span class=\"token function\">RegisterCallback<\/span><span class=\"token punctuation\">(<\/span>m_internal_network_callback<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><\/p>\n<p><span class=\"token keyword\">class<\/span> <span class=\"token class-name\">ServerInternalNetCallback<\/span> <span class=\"token operator\">:<\/span> <span class=\"token base-clause\"><span class=\"token keyword\">public<\/span> <span class=\"token class-name\">IEngineNetCallback<\/span><\/span><br \/>\n<span class=\"token punctuation\">{<\/span><br \/>\n<span class=\"token keyword\">public<\/span><span class=\"token operator\">:<\/span><br \/>\n<span class=\"token function\">ServerInternalNetCallback<\/span><span class=\"token punctuation\">(<\/span>LoginServerModule <span class=\"token operator\">*<\/span>server<span class=\"token punctuation\">)<\/span><span class=\"token operator\">:<\/span><span class=\"token function\">m_server<\/span><span class=\"token punctuation\">(<\/span>server<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token operator\">~<\/span><span class=\"token function\">ServerInternalNetCallback<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token keyword\">void<\/span> <span class=\"token function\">SetAllowIpPrefix<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">const<\/span> std<span class=\"token operator\">::<\/span>string <span class=\"token operator\">&amp;<\/span>allow_ip_prefix<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span> m_allow_ip_prefix <span class=\"token operator\">&#061;<\/span> allow_ip_prefix<span class=\"token punctuation\">;<\/span> <span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token keyword\">virtual<\/span> <span class=\"token keyword\">void<\/span> <span class=\"token function\">OnAccept<\/span><span class=\"token punctuation\">(<\/span>Port listen_port<span class=\"token punctuation\">,<\/span> NetID netid<span class=\"token punctuation\">,<\/span> IP ip<span class=\"token punctuation\">,<\/span> Port port<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token keyword\">virtual<\/span> <span class=\"token keyword\">void<\/span> <span class=\"token function\">OnRecv<\/span><span class=\"token punctuation\">(<\/span>NetID netid<span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">const<\/span> <span class=\"token keyword\">char<\/span> <span class=\"token operator\">*<\/span>data<span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">int<\/span> length<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token keyword\">virtual<\/span> <span class=\"token keyword\">void<\/span> <span class=\"token function\">OnDisconnect<\/span><span class=\"token punctuation\">(<\/span>NetID netid<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token keyword\">virtual<\/span> <span class=\"token keyword\">void<\/span> <span class=\"token function\">OnConnect<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">bool<\/span> result<span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">int<\/span> handle<span class=\"token punctuation\">,<\/span> NetID netid<span class=\"token punctuation\">,<\/span> IP ip<span class=\"token punctuation\">,<\/span> Port port<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">;<\/span><\/p>\n<p>***OnAccept()**&#xff1a;\u6839\u636e\u76d1\u542c\u7aef\u53e3\u7684\u4e0d\u540c&#xff0c;\u533a\u5206\u6267\u884cLoginServer::Instance().OnGSAccept\/LoginServer::Instance().OnGateAccept\/LoginServer::Instance().OnGlobalAccept&#xff0c;\u5373\u6536\u5230\u6765\u81ealogicserver\/gateserver\/globalserver\u76d1\u542c\u8bf7\u6c42\u65f6&#xff0c;\u5206\u522b\u7ef4\u62a4\u8fde\u63a5\u5173\u7cfb\u3002<br \/>\n    * **OnRecv()**&#xff1a;LoginServer::Instance().OnInnerRecv() \u6839\u636enetid\u533a\u5206\u662fOnGSRecv\/OnGateRecv\/OnGlobalRecv&#xff0c;\u5373\u6536\u5230\u6765\u81ealogicserver\/gateserver\/globalserver\u6d88\u606f\u65f6&#xff0c;\u8d70\u7684\u5177\u4f53\u767b\u9646\u903b\u8f91&#xff08;\u4e00\u822c\u5c31\u662f\u7ef4\u62a4\u7684\u8fde\u63a5\u72b6\u6001\u6539\u53d8\u4e86&#xff0c;\u6bd4\u5982\u767b\u9646\u72b6\u6001\u7684\u6539\u53d8&#xff09;\u3002<br \/>\n    * **OnDisconnect()**&#xff1a;LoginServer::Instance().OnInnerDisconnect() \u6839\u636enetid\u533a\u5206\u662fOnGSDisconnect\/OnGateDisconnect\/OnGlobalDisconnect&#xff0c;\u5373\u6536\u5230\u6765\u81ealogicserver\/gateserver\/globalserver\u6d88\u606f\u65f6&#xff0c;\u8d70\u7684\u5177\u4f53\u9000\u51fa\u8fde\u63a5\u903b\u8f91&#xff08;\u4e00\u822c\u5c31\u662f\u7ef4\u62a4\u7684\u8fde\u63a5\u72b6\u6001\u6539\u53d8\u4e86&#xff0c;\u6bd4\u5982\u7ef4\u62a4\u7684\u5217\u8868\u5220\u9664\u6307\u5b9a netid \u7684\u9879&#xff09;\u3002<br \/>\n    * **OnConnect()**&#xff1a;\u7a7a\u3002<\/p>\n<h4>rmiclient\/<\/h4>\n<p><img decoding=\"async\" src=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2025\/04\/20250418212206-6802c27e1f972.png\" alt=\"\" \/><\/p>\n<ul>\n<li>rmidaloginclient&#xff1a;\u5b9a\u4e49RMI\u8bf7\u6c42\u51fd\u6570 RMILoginClient::UserLoginAsyn&#xff1b;RMILoginClient::AddRoleAsyn&#xff1b;RMILoginClient::RemoveRoleAsyn&#xff1b;RMILoginClient::PassAntiWallowAsyn&#xff1b;RMILoginClient::Frobid&#xff1b;RMILoginClient::AddNameInfoAsyn&#xff1b;RMILoginClient::UpdateNameInfoAsyn&#xff1b;RMILoginClient::DeleteNameInfoAsyn&#xff1b;RMILoginClient::DeleteNameInfoByNameAsyn&#xff1b;RMILoginClient::GetPlatNameByRoleIDAsyn&#xff1b;RMILoginClient::AddIdentityAsyn&#xff1b;RMILoginClient::OldRoleListAsyn&#xff1b;RMILoginClient::DelOldRoleAsyn&#xff1b;RMILoginClient::GetNewGoldAsyn&#xff1b;RMILoginClient::GetNewChargePlanAsyn\u3002\u5b9a\u4e49RMI\u56de\u8c03\u51fd\u6570 RMIUserLoginBackObject::__response&#xff1b;RMIAddRoleBackObject::__response&#xff1b;RMIRemoveRoleBackObject::__response&#xff1b;RMIPassAntiWallowBackObject::__response&#xff1b;RMIForbidBackObject::__response&#xff1b;RMIAddNameInfoBackObject::__response&#xff1b;RMIUpdateNameInfoBackObject::__response&#xff1b;RMIDeleteNameInfoBackObject::__response&#xff1b;RMIDeleteNameInfoByNameBackObject::__response&#xff1b;RMIGetPlatNameBackObject::__response&#xff1b;RMIAddIdentityBackObject::__response&#xff1b;RMIOldRoleListBackObject::__response&#xff1b;RMIDelOldRoleBackObject::__response&#xff1b;RMIGetNewGoldListBackObject::__response&#xff1b;RMIGetNewChargePlanListBackObject::__response\u3002<\/li>\n<li>**rmidaroleclient&#xff1a;**\u5b9a\u4e49RMI\u8bf7\u6c42\u51fd\u6570 RMILRoleClient::GetRoleInfoAsyn()&#xff1b;RMILRoleClient::CreateRoleAsyn()&#xff1b;RMILRoleClient::DestroyRoleAsyn()\u3002\u5b9a\u4e49RMI\u56de\u8c03\u51fd\u6570 RMIGetRoleInfoBackObject::__response&#xff1b;RMICreateRoleBackObject::__response&#xff1b;&#096;&#096;RMIDestroyRoleBackObject::__response\u3002<\/li>\n<\/ul>\n<h4>server\/<\/h4>\n<p><img decoding=\"async\" src=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2025\/04\/20250418212206-6802c27e3de9c.png\" alt=\"\" \/><\/p>\n<ul>\n<li>**gameserver&#xff1a;**\u7ef4\u62a4scene_list&#xff0c;\u4e0d\u8fc7\u597d\u50cf\u6682\u65f6\u6ca1\u7528\u5230\u3002<\/li>\n<li>**ipforbid&#xff1a;**\u7ef4\u62a4m_ip_list&#xff0c;\u91cc\u9762\u5b58\u50a8\u88ab\u7981\u6b62\u7684ip&#xff0c;\u4ee5\u53ca\u5c01\u7981\u65f6\u95f4\u3002\u5bf9list\u7684\u589e\u5220\u6539\u67e5\u63a5\u53e3\u3002<\/li>\n<li>**loginlog&#xff1a;**\u521d\u59cb\u5316log&#xff0c;\u7528\u5230\u4e86\u5c01\u88c5\u7684\u6a21\u5757ILogModule&#xff0c;\u8bbe\u7f6e\u4e00\u4e9blog\u5c5e\u6027\u3002<\/li>\n<li>**loginmempool&#xff1a;**\u5bf9\u8c61\u6c60\u3002\u63d0\u4f9b\u4e8664\u4e2aUserItem\u5b9e\u4f8b\u548c64\u4e2a\u591a\u4e2aRMI\u63a5\u53e3\u3002<\/li>\n<li>**loginserver&#xff1a;**\u7ef4\u62a4m_user_manager&#xff0c;m_gs_list&#xff0c;m_gateway_list&#xff0c;m_logout_time_map\u3002\u63d0\u4f9b\u4e00\u4e9b\u63a5\u53e3\u5f53\u6536\u5230\u7f51\u7edc\u8bf7\u6c42\u65f6\u89e6\u53d1\u65b9\u6cd5&#xff08;OnGSAccept\/OnGateAccept\/OnGlobalAccept\/OnInnerRecv\/OnInnerDisconnect\/OnGSRecv\/OnGSDisconnect\/OnRegisterGS&#xff09;\u3002\u5bf9m_user_manager\u7684\u7ba1\u7406&#xff08;OnLoginReq\/OnRoleReq\/OnCreateRole\/OnDestroyRole\/OnPassAntiWallow\/OnPassAntiWallowEX\/OnOldRoleListReq\/OnOldRoleRecoverReq\/OnKuafuRoleReq&#xff09;\u3002<\/li>\n<li>**loginserverlogin&#xff1a;**RMI\u56de\u8c03\u5b9e\u73b0\u7c7bImpl\u7684\u56de\u8c03\u65b9\u6cd5\u7684\u5177\u4f53\u5b9e\u73b0\u3002<\/li>\n<li>**loginserverregister&#xff1a;**RMI\u56de\u8c03\u5b9e\u73b0\u7c7bImpl\u7684\u56de\u8c03\u65b9\u6cd5\u7684\u5177\u4f53\u5b9e\u73b0\u3002<\/li>\n<li>**rmibackobjdef&#xff1a;**RMI\u56de\u8c03\u5b9e\u73b0\u7c7bImpl\u7684\u5177\u4f53\u5b9a\u4e49\u3002\u4e3b\u8981\u5b9e\u73b0\u7c7bImpl\u662f\u7ee7\u627f\u81earmidaloginclient\u6216\u8005rmidaroleclient\u91cc\u5b9a\u4e49\u7684RMI\u56de\u8c03\u7c7b\u3002<\/li>\n<li>**roleinitattr&#xff1a;**\u7ef4\u62a4m_role_init_attr&#xff0c;\u89d2\u8272\u521b\u5efa\u65f6\u4ece\u6570\u636e\u5e93\u62c9\u53d6\u7684\u5c5e\u6027\u503c\u4fdd\u5b58\u5230\u8fd9\u4e2a\u53d8\u91cf\u3002<\/li>\n<li>**threadstate&#xff1a;**\u7ef4\u62a4m_thread_user_num_state_map&#xff0c;\u5bf9\u8fd9\u4e2amap\u589e\u5220\u6539\u67e5&#xff0c;\u4e3b\u8981\u7edf\u8ba1\u4e0d\u540c\u5e73\u53f0\u73a9\u5bb6\u4e2a\u6570\u3002<\/li>\n<li>**usermanager&#xff1a;**\u7ef4\u62a4m_user_list&#xff0c;\u5bf9\u5217\u8868\u589e\u5220\u6539\u67e5\u3002\u6301\u6709threadstate\u3001WallowTimer\u3002<\/li>\n<li>**wallowtimer&#xff1a;**\u7ef4\u62a4m_account_list&#xff0c;\u8fd9\u4e2alist\u91cc\u7684\u5185\u5bb9\u81ea\u5b9a\u4e49\u7684\u7ed3\u6784\u4f53&#xff0c;\u6211\u731c\u662f\u5b58\u653e\u9632\u6c89\u8ff7\u89d2\u8272\u7684\u5217\u8868\u3002\u5bf9\u8fd9\u4e2alist\u589e\u5220\u6539\u67e5\u3002<\/li>\n<\/ul>\n<h3>chatserver<\/h3>\n<p><img decoding=\"async\" src=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2025\/04\/20250418212206-6802c27e74648.png\" alt=\"\" \/><\/p>\n<ul>\n<li>chatserver<\/li>\n<li>chatserver\/<\/li>\n<\/ul>\n<h4>chatserver<\/h4>\n<p>&#8211; \u2460 \u6ce8\u518c\u56de\u8c03\u65b9\u6cd5&#xff0c;**&#096;&lt;font style&#061;&#034;color:#DF2A3F;&#034;&gt;&#096;\u6536\u5230\u5ba2\u6237\u7aef\u7f51\u7edc\u8fde\u63a5\u540e&#xff08;ServerNetworkCallback&#xff09;&#096;&lt;\/font&gt;&#096;**<\/p>\n<p>m_network_callback <span class=\"token operator\">&#061;<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token function\">ChatNetworkCallback<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">this<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\nm_network<span class=\"token operator\">-&gt;<\/span><span class=\"token function\">RegisterCallback<\/span><span class=\"token punctuation\">(<\/span>m_network_callback<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><\/p>\n<p><span class=\"token keyword\">class<\/span> <span class=\"token class-name\">ChatNetworkCallback<\/span> <span class=\"token operator\">:<\/span> <span class=\"token base-clause\"><span class=\"token keyword\">public<\/span> <span class=\"token class-name\">IEngineNetCallback<\/span><\/span><br \/>\n<span class=\"token punctuation\">{<\/span><br \/>\n<span class=\"token keyword\">public<\/span><span class=\"token operator\">:<\/span><br \/>\n<span class=\"token function\">ChatNetworkCallback<\/span><span class=\"token punctuation\">(<\/span>ChatServer <span class=\"token operator\">*<\/span>host<span class=\"token punctuation\">)<\/span><span class=\"token operator\">:<\/span><span class=\"token function\">m_host<\/span><span class=\"token punctuation\">(<\/span>host<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token function\">m_world<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token operator\">~<\/span><span class=\"token function\">ChatNetworkCallback<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token keyword\">void<\/span> <span class=\"token function\">SetWorld<\/span><span class=\"token punctuation\">(<\/span>ChatWorld <span class=\"token operator\">*<\/span>world<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span> m_world <span class=\"token operator\">&#061;<\/span> world<span class=\"token punctuation\">;<\/span> <span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token keyword\">void<\/span> <span class=\"token function\">SetAllowIpPrefix<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">const<\/span> std<span class=\"token operator\">::<\/span>string <span class=\"token operator\">&amp;<\/span>allow_ip_prefix<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span> m_allow_ip_prefix <span class=\"token operator\">&#061;<\/span> allow_ip_prefix<span class=\"token punctuation\">;<\/span> <span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token keyword\">virtual<\/span> <span class=\"token keyword\">void<\/span> <span class=\"token function\">OnAccept<\/span><span class=\"token punctuation\">(<\/span>Port listen_port<span class=\"token punctuation\">,<\/span> NetID netid<span class=\"token punctuation\">,<\/span> IP ip<span class=\"token punctuation\">,<\/span> Port port<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token keyword\">virtual<\/span> <span class=\"token keyword\">void<\/span> <span class=\"token function\">OnRecv<\/span><span class=\"token punctuation\">(<\/span>NetID netid<span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">const<\/span> <span class=\"token keyword\">char<\/span> <span class=\"token operator\">*<\/span>data<span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">int<\/span> length<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token keyword\">virtual<\/span> <span class=\"token keyword\">void<\/span> <span class=\"token function\">OnDisconnect<\/span><span class=\"token punctuation\">(<\/span>NetID netid<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token keyword\">virtual<\/span> <span class=\"token keyword\">void<\/span> <span class=\"token function\">OnConnect<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">bool<\/span> result<span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">int<\/span> handle<span class=\"token punctuation\">,<\/span> NetID netid<span class=\"token punctuation\">,<\/span> IP ip<span class=\"token punctuation\">,<\/span> Port port<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">;<\/span><\/p>\n<p>***OnAccept()**&#xff1a;m_world-&gt;OnAccept() \u4e3b\u8981\u5de5\u4f5c\u662f\u5728\u7ef4\u62a4\u7684\u8fde\u63a5\u5217\u8868\u4e2d\u63d2\u5165\u65b0\u9879 m_gateway_set.insert(netid)\u3002<br \/>\n    * **OnRecv()**&#xff1a;m_world-&gt;OnRecv() \u6839\u636e\u534f\u8bae\u533a\u5206OnRecvMsg\/OnNetDisconnect\u3002OnUserRecv() \u6839\u636e\u534f\u8bae\u533a\u5206OnUserLogin\/OnChannelChat\/OnSingleChat\/OnChannelChatSound\/OnSingleChatSound\/OnGetSound\/OnUserMute\/OnUserUnMute\u3002<br \/>\n    * **OnDisconnect()**&#xff1a;m_world-&gt;OnDisconnect() \u5728\u7ef4\u62a4\u7684\u8fde\u63a5\u5217\u8868\u4e2d\u5220\u9664\u672c\u9879 m_gateway_set.erase(netid)\u3002<br \/>\n    * **OnConnect()**&#xff1a;\u7a7a\u3002<br \/>\n&#8211; \u2461 \u6ce8\u518c\u56de\u8c03\u65b9\u6cd5&#xff0c;**&#096;&lt;font style&#061;&#034;color:#DF2A3F;&#034;&gt;&#096;\u6536\u5230\u5185\u90e8\u7f51\u7edc\u8fde\u63a5\u540e&#xff08;ServerInternalNetCallback&#xff09;&#096;&lt;\/font&gt;&#096;**<\/p>\n<p>m_internal_network_callback <span class=\"token operator\">&#061;<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token function\">ChatInternalNetworkCallback<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">this<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\nm_internal_network<span class=\"token operator\">-&gt;<\/span><span class=\"token function\">RegisterCallback<\/span><span class=\"token punctuation\">(<\/span>m_internal_network_callback<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><\/p>\n<p><span class=\"token keyword\">class<\/span> <span class=\"token class-name\">ChatInternalNetworkCallback<\/span> <span class=\"token operator\">:<\/span> <span class=\"token base-clause\"><span class=\"token keyword\">public<\/span> <span class=\"token class-name\">IEngineNetCallback<\/span><\/span><br \/>\n<span class=\"token punctuation\">{<\/span><br \/>\n<span class=\"token keyword\">public<\/span><span class=\"token operator\">:<\/span><br \/>\n<span class=\"token function\">ChatInternalNetworkCallback<\/span><span class=\"token punctuation\">(<\/span>ChatServer <span class=\"token operator\">*<\/span>host<span class=\"token punctuation\">)<\/span><span class=\"token operator\">:<\/span><span class=\"token function\">m_host<\/span><span class=\"token punctuation\">(<\/span>host<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token function\">m_world<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token function\">m_allow_ip_prefix<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token operator\">~<\/span><span class=\"token function\">ChatInternalNetworkCallback<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token keyword\">void<\/span> <span class=\"token function\">SetWorld<\/span><span class=\"token punctuation\">(<\/span>ChatWorld <span class=\"token operator\">*<\/span>world<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span> m_world <span class=\"token operator\">&#061;<\/span> world<span class=\"token punctuation\">;<\/span> <span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token keyword\">void<\/span> <span class=\"token function\">SetAllowIpPrefix<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">const<\/span> std<span class=\"token operator\">::<\/span>string <span class=\"token operator\">&amp;<\/span>allow_ip_prefix<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span> m_allow_ip_prefix <span class=\"token operator\">&#061;<\/span> allow_ip_prefix<span class=\"token punctuation\">;<\/span> <span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token keyword\">virtual<\/span> <span class=\"token keyword\">void<\/span> <span class=\"token function\">OnAccept<\/span><span class=\"token punctuation\">(<\/span>Port listen_port<span class=\"token punctuation\">,<\/span> NetID netid<span class=\"token punctuation\">,<\/span> IP ip<span class=\"token punctuation\">,<\/span> Port port<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token keyword\">virtual<\/span> <span class=\"token keyword\">void<\/span> <span class=\"token function\">OnRecv<\/span><span class=\"token punctuation\">(<\/span>NetID netid<span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">const<\/span> <span class=\"token keyword\">char<\/span> <span class=\"token operator\">*<\/span>data<span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">int<\/span> length<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token keyword\">virtual<\/span> <span class=\"token keyword\">void<\/span> <span class=\"token function\">OnDisconnect<\/span><span class=\"token punctuation\">(<\/span>NetID netid<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token keyword\">virtual<\/span> <span class=\"token keyword\">void<\/span> <span class=\"token function\">OnConnect<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">bool<\/span> result<span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">int<\/span> handle<span class=\"token punctuation\">,<\/span> NetID netid<span class=\"token punctuation\">,<\/span> IP ip<span class=\"token punctuation\">,<\/span> Port port<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">;<\/span><\/p>\n<p>***OnAccept()**&#xff1a;\u7a7a\u3002<br \/>\n    * **OnRecv()**&#xff1a;m_world-&gt;OnInternalRecv() \u6839\u636e\u534f\u8bae\u4f20\u6765\u7684msg_type_index\u8c03\u7528\u5bf9\u5e94\u7684\u51fd\u6570 (this-&gt;*(g_gc_handler[msg_type_index]))(netid, data, length);<br \/>\n    * **OnDisconnect()**&#xff1a;m_world-&gt;OnInternalDisconnect() \u5982\u679c\u5f53\u524d\u662f\u5168\u5c40\u7f51\u7edc&#xff0c;\u8bbe\u7f6e\u4e3a\u975e\u5168\u5c40\u7f51\u7edc\u3002<br \/>\n    * **OnConnect()**&#xff1a;\u7a7a\u3002<\/p>\n<h4>chatserver\/<\/h4>\n<p><img decoding=\"async\" src=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2025\/04\/20250418212206-6802c27e95c6e.png\" alt=\"\" \/><\/p>\n<ul>\n<li>**channel&#xff1a;**\u6bcf\u4e00\u4e2achannel\u5b9e\u4f8b\u6709\u4e00\u4e2am_channel_id&#xff0c;\u5e76\u4e14\u7ef4\u62a4m_user_list\u7528\u6237\u5217\u8868&#xff0c;m_cache_msg_list\u7f13\u5b58\u7684\u6d88\u606f&#xff1b;\u63d0\u4f9b\u4e00\u4e9b\u7528\u4e8e\u53d1\u9001\u548c\u63a5\u53d7channel\u4fe1\u606f\u7684\u63a5\u53e3&#xff08;OnChannelMsg\/OnSendChannelMsg\/OnSendCrossChannelMsg\/OnSendServerChannelMsg\/OnCrossChannelMsg\/OnSendCrossTeamChannelMsg\/BroadcastMsg\/CacheChannelMsg\/SendCacheMsg&#xff09;\u3002<\/li>\n<li>**channelmanager&#xff1a;**\u7ef4\u62a4m_channel_list&#xff0c;\u5f80\u8fd9\u4e2achannel\u5217\u8868\u589e\u5220\u6539\u67e5\u3002<\/li>\n<li>**chatmempool&#xff1a;**\u5bf9\u8c61\u6c60&#xff0c;\u63d0\u4f9b\u4e8664\u4e2achannel\u5b9e\u4f8b\u548c64\u4e2achatuser\u5b9e\u4f8b\u3002<\/li>\n<li>**chatuser&#xff1a;**\u804a\u5929\u7528\u6237\u5b9e\u4f8b&#xff0c;channel\u5b9e\u4f8b\u7684m_user_list\u5b58\u7684\u5c31\u662f\u8fd9\u4e2a\u3002<\/li>\n<li>**usermanager&#xff1a;**\u7ef4\u62a4m_user_list&#xff0c;\u4e5f\u5c31\u662fchatuser\u5217\u8868&#xff0c;\u5bf9\u5217\u8868\u589e\u5220\u6539\u67e5\u3002<\/li>\n<li>**chatworld&#xff1a;**\u7ef4\u62a4m_channel_manager\u3001m_user_manager\u3001m_sound_cache\u3002\u5bf9channel\u3001user\u3001sound_cache\u7684\u589e\u5220\u6539\u67e5\u7ba1\u7406&#xff0c;\u4ee5\u53ca\u63d0\u4f9b\u56de\u8c03\u7684\u63a5\u53e3&#xff0c;\u5728\u6536\u5230\u7f51\u7edc\u6d88\u606f\u65f6&#xff0c;\u8c03\u7528\u5177\u4f53\u63a5\u53d7\u6d88\u606f\u65b9\u6cd5\u3002<\/li>\n<li>**engineadapter&#xff1a;**\u5bf9m_clock\u3001m_network\u3001m_internal_network\u6a21\u5757\u7684\u5c01\u88c5&#xff0c;\u8c03\u7528\u6a21\u5757\u7684\u7f51\u7edc\u63a5\u53e3\u65b9\u6cd5\u3002<\/li>\n<li>**soundcache&#xff1a;**\u7ef4\u62a4m_sound_list \u7f13\u5b58\u58f0\u97f3\u4fe1\u606f\u3002<\/li>\n<\/ul>\n<h3>dataserver<\/h3>\n<p><img decoding=\"async\" src=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2025\/04\/20250418212206-6802c27eb4f11.png\" alt=\"\" \/><\/p>\n<h4>engineadapter<\/h4>\n<p>\u63d0\u4f9b\u63a5\u53e3\u53d1\u9001\u7ed9db\u3002<\/p>\n<h4>exceptdump<\/h4>\n<p>window\u5e73\u53f0\u4e0b\u5f00\u542f\/\u5173\u95eddump\u6355\u6349\u3002<\/p>\n<h4>darmiinit<\/h4>\n<p>\u6ce8\u518cRMI\u51fd\u6570\u3002<\/p>\n<h4>databaselayer<\/h4>\n<ul>\n<li>\u6301\u6709commandManager&#xff0c;\u4e3b\u8981\u4f5c\u7528\u662f\u63d0\u4f9b\u63a5\u53e3\u95f4\u63a5\u8c03\u7528commandManager\u63d0\u4f9b\u7684\u83b7\u53d6\u547d\u4ee4&#xff08;command&#xff09;\u7684\u65b9\u6cd5\u3002<\/li>\n<li>\u63d0\u4f9b\u7c7bStmtHelper&#xff0c;\u6790\u6784\u65f6\u81ea\u52a8\u5c06\u8fde\u63a5&#xff08;connect&#xff09;\u653e\u56de\u8fde\u63a5\u6c60&#xff08;conn_pool&#xff09;\u3002<\/li>\n<\/ul>\n<h4>dataaccess<\/h4>\n<p>&#8211; \u2460 \u6ce8\u518c\u5b9a\u65f6\u5668\u65b9\u6cd5&#xff0c;**&#096;&lt;font style&#061;&#034;color:#DF2A3F;&#034;&gt;&#096;\u5b9a\u65f6\u5668\u89e6\u53d1&#xff08;MsgMoniterTimer&#xff09;&#096;&lt;\/font&gt;&#096;**<\/p>\n<p><span class=\"token keyword\">static<\/span> <span class=\"token keyword\">const<\/span> <span class=\"token keyword\">int<\/span> MSG_MONITER_INTERVAL_S <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">600<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token class-name\">EngineAdapter<\/span><span class=\"token operator\">::<\/span><span class=\"token function\">Instance<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">CreateTimerSecond<\/span><span class=\"token punctuation\">(<\/span>MSG_MONITER_INTERVAL_S<span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token function\">MsgMoniterTimer<\/span><span class=\"token punctuation\">(<\/span>MSG_MONITER_INTERVAL_S<span class=\"token punctuation\">,<\/span> <span class=\"token operator\">&amp;<\/span>m_mem_mommonitor_log<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><\/p>\n<p><span class=\"token keyword\">class<\/span> <span class=\"token class-name\">MsgMoniterTimer<\/span> <span class=\"token operator\">:<\/span> <span class=\"token base-clause\"><span class=\"token keyword\">public<\/span> <span class=\"token class-name\">ITimerCallback<\/span><\/span><br \/>\n<span class=\"token punctuation\">{<\/span><br \/>\n<span class=\"token keyword\">int<\/span> interval_s<span class=\"token punctuation\">;<\/span><br \/>\nLogAgent <span class=\"token operator\">*<\/span>log_s<span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token keyword\">public<\/span><span class=\"token operator\">:<\/span><br \/>\n<span class=\"token function\">MsgMoniterTimer<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span> i<span class=\"token punctuation\">,<\/span> LogAgent <span class=\"token operator\">*<\/span>log<span class=\"token punctuation\">)<\/span><span class=\"token operator\">:<\/span><span class=\"token function\">interval_s<\/span><span class=\"token punctuation\">(<\/span>i<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token function\">log_s<\/span><span class=\"token punctuation\">(<\/span>log<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token keyword\">virtual<\/span> <span class=\"token keyword\">void<\/span> <span class=\"token function\">OnTimer<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><br \/>\n<span class=\"token punctuation\">{<\/span><br \/>\n<span class=\"token keyword\">static<\/span> <span class=\"token keyword\">char<\/span> buff<span class=\"token punctuation\">[<\/span><span class=\"token number\">1024<\/span> <span class=\"token operator\">*<\/span> <span class=\"token number\">10<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">;<\/span><\/p>\n<p>memmonitor<span class=\"token operator\">::<\/span><span class=\"token function\">PrintDyMemInfo<\/span><span class=\"token punctuation\">(<\/span>buff<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\nlog_s<span class=\"token operator\">-&gt;<\/span><span class=\"token function\">print<\/span><span class=\"token punctuation\">(<\/span>LL_INFO<span class=\"token punctuation\">,<\/span> buff<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token class-name\">EngineAdapter<\/span><span class=\"token operator\">::<\/span><span class=\"token function\">Instance<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">CreateTimerSecond<\/span><span class=\"token punctuation\">(<\/span>interval_s<span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token function\">MsgMoniterTimer<\/span><span class=\"token punctuation\">(<\/span>interval_s<span class=\"token punctuation\">,<\/span> log_s<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token keyword\">virtual<\/span> <span class=\"token keyword\">void<\/span> <span class=\"token function\">Free<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span> <span class=\"token keyword\">delete<\/span> <span class=\"token keyword\">this<\/span><span class=\"token punctuation\">;<\/span> <span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">;<\/span><\/p>\n<p>&#8211; \u2461 \u6ce8\u518c\u56de\u8c03\u65b9\u6cd5&#xff0c;**&#096;&lt;font style&#061;&#034;color:#DF2A3F;&#034;&gt;&#096;\u6536\u5230\u7f51\u7edc\u8fde\u63a5\u540e&#xff08;DataAccessNetworkCallback&#xff09;&#096;&lt;\/font&gt;&#096;**<\/p>\n<p>m_network_callback <span class=\"token operator\">&#061;<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token function\">DataAccessNetworkCallback<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">this<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\nm_network<span class=\"token operator\">-&gt;<\/span><span class=\"token function\">RegisterCallback<\/span><span class=\"token punctuation\">(<\/span>m_network_callback<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><\/p>\n<p><span class=\"token keyword\">class<\/span> <span class=\"token class-name\">DataAccessNetworkCallback<\/span> <span class=\"token operator\">:<\/span> <span class=\"token base-clause\"><span class=\"token keyword\">public<\/span> <span class=\"token class-name\">IEngineNetCallback<\/span><\/span><br \/>\n<span class=\"token punctuation\">{<\/span><br \/>\n<span class=\"token keyword\">public<\/span><span class=\"token operator\">:<\/span><br \/>\n<span class=\"token function\">DataAccessNetworkCallback<\/span><span class=\"token punctuation\">(<\/span>DataAccess <span class=\"token operator\">*<\/span>host<span class=\"token punctuation\">)<\/span><span class=\"token operator\">:<\/span><span class=\"token function\">m_host<\/span><span class=\"token punctuation\">(<\/span>host<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token function\">m_allow_ip_prefix<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">&#034;&#034;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token operator\">~<\/span><span class=\"token function\">DataAccessNetworkCallback<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token keyword\">void<\/span> <span class=\"token function\">SetAllowIpPrefix<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">const<\/span> std<span class=\"token operator\">::<\/span>string <span class=\"token operator\">&amp;<\/span>allow_ip_prefix<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span> m_allow_ip_prefix <span class=\"token operator\">&#061;<\/span> allow_ip_prefix<span class=\"token punctuation\">;<\/span> <span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token keyword\">virtual<\/span> <span class=\"token keyword\">void<\/span> <span class=\"token function\">OnAccept<\/span><span class=\"token punctuation\">(<\/span>Port listen_port<span class=\"token punctuation\">,<\/span> NetID netid<span class=\"token punctuation\">,<\/span> IP ip<span class=\"token punctuation\">,<\/span> Port port<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token keyword\">virtual<\/span> <span class=\"token keyword\">void<\/span> <span class=\"token function\">OnRecv<\/span><span class=\"token punctuation\">(<\/span>NetID netid<span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">const<\/span> <span class=\"token keyword\">char<\/span> <span class=\"token operator\">*<\/span>data<span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">int<\/span> length<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token keyword\">virtual<\/span> <span class=\"token keyword\">void<\/span> <span class=\"token function\">OnDisconnect<\/span><span class=\"token punctuation\">(<\/span>NetID netid<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token keyword\">virtual<\/span> <span class=\"token keyword\">void<\/span> <span class=\"token function\">OnConnect<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">bool<\/span> result<span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">int<\/span> handle<span class=\"token punctuation\">,<\/span> NetID netid<span class=\"token punctuation\">,<\/span> IP ip<span class=\"token punctuation\">,<\/span> Port port<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">;<\/span><\/p>\n<p>***OnAccept()**&#xff1a;\u8bbe\u7f6em_global_server_id\u3002<br \/>\n    * **OnRecv()**&#xff1a;OnRecvDBMsg() \u4e3b\u8981\u4f5c\u7528\u662f\u540c\u6b65\u89d2\u8272\u6570\u636eOnSynRoleData() \u6700\u540e\u8c03\u7528RMIRoleObject::RoleSave()&#xff1a; \u5982\u679c\u662f\u672c\u5730\u89d2\u8272\u6570\u636e&#xff1a;&#xff08;\u4ece\u8fde\u63a5\u6c60\u83b7\u53d6conn&#xff0c;\u5e76\u4e14json\u5e8f\u5217\u5316\u89d2\u8272\u6570\u636e&#xff0c;\u901a\u8fc7\u4e0emysql\u7684\u957f\u8fde\u63a5conn\u53d1\u9001\u5230mysql\u6570\u636e\u5e93\u3002&#xff09;&#xff1b;\u5982\u679c\u5207\u6362gameserver\u7684:&#xff08;\u628a\u89d2\u8272\u6570\u636e\u540c\u6b65\u5230globalserver&#xff09;&#xff1b;\u5982\u679c\u5207\u6362gameserver\u6ca1\u627e\u5230&#xff1a;&#xff08;\u628a\u89d2\u8272\u6570\u636e\u5b58\u5230\u6570\u636e\u5e93&#xff0c;\u6ce8\u610f\u662f\u5176\u4ed6\u5206\u533a\u7684\u8868&#xff09;&#xff1b;\u5982\u679c\u8de8\u670d\u89d2\u8272\u6570\u636e&#xff1a;&#xff08;\u4fdd\u5b58\u5230\u672c\u5730\u5185\u5b58\u7684m_cross_user_list\u8fd9\u4e2a\u6570\u636e\u7ed3\u6784\u5217\u8868\u91cc&#xff09;\u3002<br \/>\n    * **OnDisconnect()**&#xff1a;\u8bbe\u7f6em_global_server_id\u4e3a-1\u3002<br \/>\n    * **OnConnect()**&#xff1a;\u7a7a\u3002<\/p>\n<h4>dataaccess\/crossdata<\/h4>\n<p><img decoding=\"async\" src=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2025\/04\/20250418212206-6802c27eead26.png\" alt=\"\" \/><\/p>\n<p>CrossData\u662f\u9759\u6001\u5bf9\u8c61&#xff0c;\u4e3b\u8981\u4f5c\u7528\u662f\u7528\u4e8e\u5b58\u50a8role_all_struct\u7684std::map&lt;UserID, CrossUser&gt; CrossUserList&#xff0c;\u5373\u8de8\u670d\u7684\u89d2\u8272\u6570\u636e\u7684map\u3002<\/p>\n<h4>dataaccess\/datalayer<\/h4>\n<p><img decoding=\"async\" src=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2025\/04\/20250418212207-6802c27f15bec.png\" alt=\"\" \/><\/p>\n<ul>\n<li>**commandmanager&#xff1a;**\u7ef4\u62a4std::vector&lt;TableOperator&gt; OperatorList\u64cd\u4f5c\u5217\u8868&#xff0c;\u5176\u4e2dTableOperator\u662f\u6570\u636e\u5e93\u4e2d\u7684\u8868table\u548c\u5bf9\u5e94\u7684\u64cd\u4f5c\u547d\u4ee4command\u5c01\u88c5\u7684\u6570\u636e\u7ed3\u6784\u3002\u63d0\u4f9b\u5bf9\u5916\u63a5\u53e3GetCommand&#xff08;\u6839\u636etable_id\u83b7\u53d6\u64cd\u4f5c\u7684\u547d\u4ee4&#xff09;\u548cGetTable&#xff08;\u83b7\u53d6mysql\u64cd\u4f5c\u7684\u8868&#xff09;\u3002<\/li>\n<li>**tablefactory&#xff1a;**\u7ed9CommandManager::OperatorList GetTableFactroy()\u52a0\u4e0a\u4e00\u4e2a\u547d\u540d\u7a7a\u95f4tabledef\u3002<\/li>\n<\/ul>\n<h5>\/cache<\/h5>\n<p><img decoding=\"async\" src=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2025\/04\/20250418212207-6802c27f347f0.png\" alt=\"\" \/><\/p>\n<ul>\n<li>**cachebase&#xff1a;**\u7a7a\u3002<\/li>\n<li>**cachecmpnode&#xff1a;**\u7a7a\u3002<\/li>\n<li>**cachecommand&#xff1a;**\u7a7a\u3002<\/li>\n<li>**cachemaker&#xff1a;**\u7a7a\u3002<\/li>\n<li>**cachemanager&#xff1a;**\u7a7a\u3002<\/li>\n<li>**cachenode&#xff1a;**\u7a7a\u3002<\/li>\n<li>**cachetransaction&#xff1a;**\u7a7a\u3002<\/li>\n<\/ul>\n<h5>\/db<\/h5>\n<p><img decoding=\"async\" src=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2025\/04\/20250418212207-6802c27f53e72.png\" alt=\"\" \/><\/p>\n<ul>\n<li>**connection&#xff1a;**\u7eaf\u865a\u7c7bIConnection&#xff0c;\u4f5c\u7528\u662f\u8fde\u63a5\u6570\u636e\u5e93\u7684\u62bd\u8c61\u7c7b\u3002\u63d0\u4f9b\u865a\u51fd\u6570\u63a5\u53e3&#xff1a;Clone&#xff1b;Connect&#xff1b;Reconnect&#xff1b;IsActive\/IsBegin&#xff1b;Close&#xff1b;IsClosed&#xff1b;SetAutoCommit&#xff1b;GetAutoCommit&#xff1b;GetIsCache&#xff1b;GetConn&#xff1b;GetInsertID&#xff1b;Begin&#xff1b;Commit&#xff1b;Rollback&#xff1b;CreateStatement&#xff1b;GetErrNo&#xff1b;GetError\u3002<\/li>\n<li>**connfactory&#xff1a;**\u7eaf\u865a\u7c7bIConnFactroy&#xff0c;\u4f5c\u7528\u662f\u521b\u5efaIConnection\u7684\u62bd\u8c61\u7c7b\u3002\u63d0\u4f9b\u865a\u51fd\u6570\u63a5\u53e3&#xff1a;CreateConn&#xff0c;\u8fd4\u56de\u503c\u662fIConnection\u3002<\/li>\n<li>**connpool&#xff1a;*\u7ef4\u62a4std::queue&lt;IConnection&gt; ConnList\u961f\u5217&#xff0c;\u6301\u6709IConnFactroy *m_conn_factroy\u3002\u5bf9\u5916\u63d0\u4f9b\u7684\u63a5\u53e3\u4e3b\u8981\u662fGetConn&#xff08;\u4eceConnList\u83b7\u53d6\u5176\u4e2d\u4e00\u4e2aIConnection&#xff09;\u548cPutConn&#xff08;\u628aIConnection\u653e\u5165ConnList&#xff09;\u3002\u5185\u90e8\u65b9\u6cd5Init\u5728\u521d\u59cb\u5316\u7684\u65f6\u5019&#xff0c;\u6839\u636e\u914d\u7f6e\u7684\u6570\u91cf\u8c03\u7528m_conn_factroy-&gt;CreateConn()\u521b\u5efa\u591a\u4e2aIConnection\u8fde\u63a5&#xff0c;\u5e76\u4e14\u653e\u5165ConnList\u4e2d\u3002<\/li>\n<li>**dbdef&#xff1a;**\u5b9a\u4e49\u679a\u4e3eDBDATATYPE&#xff0c;\u5217\u4e3e\u4e86mysql\u6570\u636e\u7c7b\u578b\u3002<\/li>\n<li>**resultset&#xff1a;**\u7eaf\u865a\u7c7bIResultset&#xff0c;\u4f5c\u7528\u662f\u8fd4\u56de\u5173\u7cfb\u578b\u6570\u636e\u5e93\u7ed3\u679c\u7684\u62bd\u8c61\u7c7b\u3002\u63d0\u4f9b\u865a\u51fd\u6570\u63a5\u53e3&#xff1a;GetStmt\/SetStmt&#xff1b;Init\/Close&#xff1b;GetColumnCount\/GetColumnName\/GetColumnDataType&#xff1b;FindColumn&#xff1b;Next&#xff1b;IsNull&#xff1b;GetByte&#xff1b;GetBoolean&#xff1b;GetString&#xff1b;GetInt32&#xff1b;GetDouble&#xff1b;GetDate&#xff1b;GetTime&#xff1b;GetTimestamp&#xff1b;GetLong64\u3002<\/li>\n<li>**statement&#xff1a;**\u7eaf\u865a\u7c7bIStatement&#xff0c;\u4f5c\u7528\u662f\u8bbe\u7f6e\u5173\u7cfb\u578b\u6570\u636e\u5e93\u53c2\u6570\u5b57\u6bb5\u4ee5\u53ca\u6267\u884c\u64cd\u4f5c\u6570\u636e\u5e93\u7684\u62bd\u8c61\u7c7b\u3002\u63d0\u4f9b\u865a\u51fd\u6570\u63a5\u53e3&#xff1a;SetConnection\/GetConnection&#xff1b;GetStmt&#xff1b;GetInsertID&#xff1b;Prepare&#xff1b;ClearParameters&#xff1b;Close&#xff1b;SetByte&#xff1b;SetBoolean&#xff1b;SetInt32&#xff1b;SetDouble&#xff1b;SetLong64&#xff1b;SetString&#xff1b;SetDate&#xff1b;SetTime&#xff1b;SetTimestamp&#xff1b;Execute&#xff1b;ExecuteQuery&#xff1b;<\/li>\n<li>**transaction&#xff1a;**\u7eaf\u865a\u7c7bITransaction&#xff0c;\u4f5c\u7528\u662f\u7ffb\u8bd1\u6570\u636e\u5e93\u7ed3\u679c\u6570\u636e\u7ed3\u6784\u7684\u62bd\u8c61\u7c7b\u3002\u63d0\u4f9b\u865a\u51fd\u6570\u63a5\u53e3&#xff1a;Begin&#xff1b;Commit&#xff1b;Rollback&#xff1b;IsBegin&#xff1b;Clone\u3002<\/li>\n<\/ul>\n<h6>\/mysql<\/h6>\n<p><img decoding=\"async\" src=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2025\/04\/20250418212207-6802c27f74df6.png\" alt=\"\" \/><\/p>\n<ul>\n<li>**mysqlconnection&#xff1a;**\u7ee7\u627f\u81eaIConnection&#xff0c;\u5b9e\u73b0IConnection\u6240\u6709\u865a\u51fd\u6570&#xff0c;\u5177\u4f53\u8c03\u7528mysql.h\u5e93\u7684\u51fd\u6570\u5b9e\u73b0\u4e0emysql\u670d\u52a1\u5668\u7684\u957f\u8fde\u63a5&#xff0c;\u6301\u6709MYSQL *m_mysql\u4e0emysql\u7684\u8fde\u63a5\u3002<\/li>\n<li>**mysqlconnfactory&#xff1a;**\u7ee7\u627f\u81eaIConnFactroy&#xff0c;\u5b9e\u73b0IConnFactroy\u6240\u6709\u865a\u51fd\u6570&#xff0c;\u4e3b\u8981\u662fCreateConn\u51fd\u6570\u521b\u5efamysqlconnection\u5b9e\u4f8b&#xff0c;\u5e76\u4e14\u8c03\u7528connect\u51fd\u6570\u8fde\u63a5mysql\u3002<\/li>\n<li>**mysqldef&#xff1a;**\u5b9a\u4e49getDataType\u51fd\u6570&#xff0c;\u4e3b\u8981\u4f5c\u7528\u662f\u8fd4\u56demysql\u6570\u636e\u7c7b\u578b\u3002<\/li>\n<li>**mysqlresult&#xff1a;**\u7ee7\u627f\u81eaIResultset&#xff0c;\u5b9e\u73b0IResultset\u6240\u6709\u865a\u51fd\u6570&#xff0c;\u6301\u6709std::map&lt;std::string, IndexType&gt; m_field_name_info\u4fdd\u5b58\u4ecemysql\u670d\u52a1\u5668\u83b7\u53d6\u5230\u7684\u7ed3\u679c\u3002<\/li>\n<li>**mysqlstatement&#xff1a;\u7ee7\u627f\u81eaIStatement&#xff0c;\u5b9e\u73b0IStatement\u6240\u6709\u865a\u51fd\u6570&#xff0c;\u6301\u6709MYSQL_BIND m_params \u548c YSQL_STMT m_stmt; \u7528\u4e8e\u5b58\u50a8mysql\u8bf7\u6c42\u8bed\u53e5\u7684\u53c2\u6570\u3002<\/li>\n<\/ul>\n<h5>\/dbopera<\/h5>\n<p><img decoding=\"async\" src=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2025\/04\/20250418212207-6802c27f96120.png\" alt=\"\" \/><\/p>\n<ul>\n<li>**dataadapter&#xff1a;**\u5bf9mysql\u6570\u636e\u7ed3\u6784\u7684\u5c01\u88c5\u3002\u5c01\u88c5mysql\u57fa\u672c\u6570\u636e\u7ed3\u6784&#xff1b;\u5c01\u88c5mysql\u8868\u548c\u57fa\u672c\u6570\u636e\u7ed3\u6784\u5217\u8868\u7684\u96c6\u5408&#xff1b;\u3002<\/li>\n<li>**dbcommand&#xff1a;**\u5c01\u88c5sql\u8bed\u53e5\u64cd\u4f5c\u547d\u4ee4\u7684\u57fa\u672c\u8bed\u53e5&#xff0c;\u63d0\u4f9b\u63a5\u53e3\u4fee\u6539\u64cd\u4f5c\u8bed\u53e5\u548c\u53c2\u6570&#xff0c;\u5e76\u4e14\u6267\u884csql\u8bed\u53e5\u547d\u4ee4\u3002<\/li>\n<li>**sqlmaker&#xff1a;**\u63d0\u4f9b\u4e94\u4e2a\u5bf9\u5916\u63a5\u53e3&#xff0c;\u5b9e\u73b0\u5bf9sql\u8bed\u53e5\u7684\u4fee\u6539\u548csql\u8bed\u53e5\u53c2\u6570\u4fee\u6539\u3002<\/li>\n<li>**sqlnode&#xff1a;**\u5b9a\u4e49sql\u8bed\u53e5\u4e00\u4e9b\u64cd\u4f5c\u7c7b\u578b&#xff08;\u6bd4\u5982\u6392\u5e8f&#xff0c;like&#xff0c;\u5217\u6570\u91cf\u7b49&#xff09;&#xff0c;\u63d0\u4f9b\u63a5\u53e3\u8bbe\u7f6esql\u8bed\u53e5\u7684\u64cd\u4f5c\u7c7b\u578b\u548c\u57fa\u672c\u6570\u636e\u7c7b\u578b\u3002<\/li>\n<\/ul>\n<h5>\/rmiobj<\/h5>\n<p><img decoding=\"async\" src=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2025\/04\/20250418212207-6802c27fb9b17.png\" alt=\"\" \/><\/p>\n<ul>\n<li>**jsonadapter&#xff1a;**\u5b9a\u4e49\u89d2\u8272\u6570\u636e&#xff0c;\u80cc\u5305\u6570\u636e&#xff0c;\u597d\u53cb\u6570\u636e&#xff0c;\u5176\u4ed6\u989d\u5916\u6570\u636e\u7b49\u7ed3\u6784\u4f53\u3002\u5b9a\u4e49 JsonInitXXX()\u63a5\u53e3\u4f7f\u7528Json\u53cd\u5e8f\u5217\u5316XXX\u6570\u636e\u5e76\u521d\u59cb\u5316\u3002\u5b9a\u4e49 JsonSaveXXX()\u63a5\u53e3\u4f7f\u7528Json\u5c06\u9700\u8981\u4fdd\u5b58\u7684\u6570\u636e\u5e8f\u5217\u5316\u4e3aJson\u683c\u5f0f\u5e76\u4fdd\u5b58\u3002<\/li>\n<li>**jsonadapterinit&#xff1a;**jsonadapter\u4e2d\u5173\u4e8e JsonInitXXX()\u63a5\u53e3\u7684\u5177\u4f53\u5b9e\u73b0&#xff0c;\u7528\u4e8e\u4f7f\u7528Json\u53cd\u5e8f\u5217\u5316XXX\u6570\u636e\u5e76\u521d\u59cb\u5316\u3002<\/li>\n<li>**jsonadaptersave&#xff1a;**jsonadapter\u4e2d\u5173\u4e8e JsonSaveXXX()\u63a5\u53e3\u7684\u5177\u4f53\u5b9e\u73b0&#xff0c;\u7528\u4e8e\u4f7f\u7528Json\u5c06\u9700\u8981\u4fdd\u5b58\u7684\u6570\u636e\u5e8f\u5217\u5316\u4e3aJson\u683c\u5f0f\u5e76\u4fdd\u5b58\u3002<\/li>\n<li>**rmiarmysave&#xff1a;**\u7a7a\u3002<\/li>\n<li>**rmicenter&#xff1a;**\u6ce8\u518cRMI\u51fd\u6570&#xff0c;\u4e3b\u8981\u6709__CreateArmy&#xff1b;__DestroyArmy&#xff1b;__InitArmy&#xff1b;__SaveArmy&#xff1b;__QueryMail&#xff1b;__MarketQueryTotalNum&#xff1b;__MarketNewTrade&#xff1b;__MarketQueryInfo&#xff1b;__MarketDeleteInfo&#xff1b;__MarketReqForTrade&#xff1b;\u5f53\u89e6\u53d1RMI\u8c03\u7528\u65f6&#xff0c;\u6267\u884c\u4e0a\u8ff0\u51fd\u6570&#xff0c;\u4e0a\u8ff0\u51fd\u6570\u5185\u6d89\u53ca\u5230\u4ece\u8fde\u63a5\u6c60\u83b7\u53d6conn\u5e76\u4e14\u5bf9mysql\u6307\u5b9a\u8868\u7684\u5b57\u6bb5\u7684\u4fee\u6539&#xff08;\u589e\u5220\u6539\u67e5&#xff09;\u3002<\/li>\n<li>**rmicommon&#xff1a;**\u6ce8\u518cRMI\u51fd\u6570&#xff0c;\u4e3b\u8981\u6709__InitServerStatusData&#xff1b;__SaveServerStatusData&#xff1b;\u5f53\u89e6\u53d1RMI\u8c03\u7528\u65f6&#xff0c;\u6267\u884c\u4e0a\u8ff0\u51fd\u6570&#xff0c;\u4e0a\u8ff0\u51fd\u6570\u5185\u6d89\u53ca\u5230\u4ece\u8fde\u63a5\u6c60\u83b7\u53d6conn\u5e76\u4e14\u5bf9mysql\u6307\u5b9a\u8868\u7684\u5b57\u6bb5\u7684\u4fee\u6539&#xff08;\u589e\u5220\u6539\u67e5&#xff09;\u3002<\/li>\n<li>**rmilogin&#xff1a;**\u6ce8\u518cRMI\u51fd\u6570&#xff0c;\u4e3b\u8981\u6709__UserLogin&#xff1b;__PassAntiWallow&#xff1b;__AddRole&#xff1b;__RemoveRole&#xff1b;__Forbid&#xff1b;__GetGold&#xff1b;__ChangeGold&#xff1b;__GetChargePlan&#xff1b;__ChangeChargePlan&#xff1b;__AddNameInfo&#xff1b;__UpdateNameInfo&#xff1b;__DeleteNameInfo&#xff1b;__DeleteNameInfoByName&#xff1b;__GetPlatNameByRoleID&#xff1b;__AddIdentity&#xff1b;__QueryNameExist&#xff1b;__ResetRoleName&#xff1b;__QueryOldRoleList&#xff1b;__DelOldRole&#xff1b;__GetNewChargePlatName&#xff1b;__GetNewChargePlanList&#xff1b;__QueryNameByRoleID&#xff1b;\u5f53\u89e6\u53d1RMI\u8c03\u7528\u65f6&#xff0c;\u6267\u884c\u4e0a\u8ff0\u51fd\u6570&#xff0c;\u4e0a\u8ff0\u51fd\u6570\u5185\u6d89\u53ca\u5230\u4ece\u8fde\u63a5\u6c60\u83b7\u53d6conn\u5e76\u4e14\u5bf9mysql\u6307\u5b9a\u8868\u7684\u5b57\u6bb5\u7684\u4fee\u6539&#xff08;\u589e\u5220\u6539\u67e5&#xff09;\u3002<\/li>\n<li>**rmirole&#xff1a;**\u6ce8\u518cRMI\u51fd\u6570&#xff0c;\u4e3b\u8981\u6709__GetRoleInfo&#xff1b;__GetRoleInfoByName&#xff1b;__RoleInit&#xff1b;__RoleSave&#xff1b;__CreateRole&#xff1b;__DestroyRole&#xff1b;__QueryPresent&#xff1b;__GetPresent&#xff1b;__SetPresentHasGet&#xff1b;__RemovePresent&#xff1b;__ReadPresent&#xff1b;__QueryRoleInfoOffline&#xff1b;__NewPresent&#xff1b;__SetRoleOnline&#xff1b;__GetRoleAllInfo&#xff1b;\u5f53\u89e6\u53d1RMI\u8c03\u7528\u65f6&#xff0c;\u6267\u884c\u4e0a\u8ff0\u51fd\u6570&#xff0c;\u4e0a\u8ff0\u51fd\u6570\u5185\u6d89\u53ca\u5230\u4ece\u8fde\u63a5\u6c60\u83b7\u53d6conn\u5e76\u4e14\u5bf9mysql\u6307\u5b9a\u8868\u7684\u5b57\u6bb5\u7684\u4fee\u6539&#xff08;\u589e\u5220\u6539\u67e5&#xff09;\u3002<\/li>\n<li>**rmiroleinit&#xff1a;**rmirole\u91cc\u4f7f\u7528\u5230\u7684\u67d0\u4e9b\u51fd\u6570\u5728\u8fd9\u91cc\u5199&#xff0c;\u4e3b\u8981\u6709InitRole&#xff1b;JsonInitRoleTable\u3002<\/li>\n<li>**rmirolesave&#xff1a;**rmirole\u91cc\u4f7f\u7528\u5230\u7684\u67d0\u4e9b\u51fd\u6570\u5728\u8fd9\u91cc\u5199&#xff0c;\u4e3b\u8981\u6709SaveTableRole&#xff1b;JsonSaveRoleTable\u3002<\/li>\n<li>**rmisystem&#xff1a;**\u6ce8\u518cRMI\u51fd\u6570&#xff0c;\u4e3b\u8981\u6709__GetPublicNotice&#xff1b;__GetCmd&#xff1b;\u5f53\u89e6\u53d1RMI\u8c03\u7528\u65f6&#xff0c;\u6267\u884c\u4e0a\u8ff0\u51fd\u6570&#xff0c;\u4e0a\u8ff0\u51fd\u6570\u5185\u6d89\u53ca\u5230\u4ece\u8fde\u63a5\u6c60\u83b7\u53d6conn\u5e76\u4e14\u5bf9mysql\u6307\u5b9a\u8868\u7684\u5b57\u6bb5\u7684\u4fee\u6539&#xff08;\u589e\u5220\u6539\u67e5&#xff09;\u3002<\/li>\n<li>**translateint&#xff1a;**\u63d0\u4f9b\u5de5\u5177\u51fd\u6570&#xff0c;\u4e3b\u8981\u6709TranslateInt64\u3002<\/li>\n<\/ul>\n<h5>\/status<\/h5>\n<p><img decoding=\"async\" src=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2025\/04\/20250418212207-6802c27fdba92.png\" alt=\"\" \/><\/p>\n<h5>\/tabledef<\/h5>\n<p><img decoding=\"async\" src=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2025\/04\/20250418212208-6802c28000449.png\" alt=\"\" \/><\/p>\n<ul>\n<li>**registertables&#xff1a;**\u7a7a\u3002<\/li>\n<li>**tabledef&#xff1a;**\u5b9a\u4e49\u83b7\u53d6mysql\u6307\u5b9a\u7684\u8868\u6240\u6709\u5185\u5bb9\u7684\u51fd\u6570&#xff0c;\u8fd4\u56de\u503c\u662fmysql\u8868\u7684id&#xff0c;\u8868\u540d&#xff0c;\u8868\u91cc\u6240\u6709\u5b57\u6bb5\u7684\u5185\u5bb9\u3002<\/li>\n<li>**tablefactory&#xff1a;**\u63d0\u4f9b\u51fd\u6570GetTableFactroy&#xff0c;\u4e3b\u8981\u4f5c\u7528\u662f\u751f\u6210\u4e00\u4e2aoperalist&#xff0c;\u8fd9\u4e2alist\u91cc\u7684\u5355\u4e2a\u662fTableOperator&#xff08;\u5305\u542btable&#xff08;mysql\u5b58\u50a8\u7684\u8868&#xff09;\u548ccommand&#xff08;\u64cd\u4f5c\u8868\u7684\u5bf9\u8c61&#xff08;\u589e\u5220\u6539\u67e5&#xff09;&#xff09;)&#xff0c;\u5c31\u662fcommandmanager\u7ba1\u7406\u7684m_operator_list\u91cc\u7684\u5185\u5bb9\u3002<\/li>\n<li>**tablefieldid&#xff1a;**\u5b9a\u4e49\u591a\u4e2a\u679a\u4e3e\u7c7b\u578b&#xff0c;\u679a\u4e3e\u7c7b\u578b\u7684\u540d\u5b57\u662fmysql\u5b58\u50a8\u7684\u8868\u540d&#xff0c;\u679a\u4e3e\u7c7b\u578b\u7684\u5185\u5bb9\u662fmysql\u5404\u4e2a\u8868\u4e2d\u6bcf\u4e2a\u5b57\u6bb5\u3002<\/li>\n<li>**tableid&#xff1a;**\u5b9a\u4e49\u679a\u4e3e\u7c7b\u578b&#xff0c;\u679a\u4e3e\u7c7b\u578b\u7684\u5185\u5bb9\u662fmysql\u5b58\u50a8\u7684\u8868\u540d\u3002<\/li>\n<\/ul>\n<h3>servercommon<\/h3>\n<h4>\u76ee\u5f55\u7ed3\u6784<\/h4>\n<p>\u2502  basedef.h<br \/>\n\u2502  chatserverdef.h<br \/>\n\u2502  commonfunc.cpp<br \/>\n\u2502  commonfunc.h<br \/>\n\u2502  configcommon.h<br \/>\n\u2502  errornum.h<br \/>\n\u2502  globaldef.h<br \/>\n\u2502  logindef.h<br \/>\n\u2502  noticenum.h<br \/>\n\u2502  serverclmempool.cpp<br \/>\n\u2502  serverclmempool.h<br \/>\n\u2502  servercommon.cpp<br \/>\n\u2502  servercommon.h<br \/>\n\u2502  serverdef.h<br \/>\n\u2502  tree.txt<br \/>\n\u2502  turnfightdef.h<br \/>\n\u2502  turnfightsizedef.h<br \/>\n\u2502  unstdstaticcheck.h<br \/>\n\u2502<br \/>\n\u251c\u2500attributecommon<br \/>\n\u251c\u2500darmi<br \/>\n\u251c\u2500Debug<br \/>\n\u251c\u2500internalprotocal<br \/>\n\u251c\u2500itemcommon<br \/>\n\u251c\u2500jsonparser<br \/>\n\u251c\u2500netprotocalbuff<br \/>\n\u251c\u2500serverconfig<br \/>\n\u251c\u2500string<br \/>\n\u251c\u2500struct<br \/>\n\u2502  \u251c\u2500army<br \/>\n\u2502  \u2514\u2500system<br \/>\n\u251c\u2500time<br \/>\n\u251c\u2500turnfightcommon<br \/>\n\u2514\u2500userprotocal<\/p>\n<ul>\n<li>**basedef.h&#xff1a;**typeof\u4e00\u7cfb\u5217c&#043;&#043;\u57fa\u672c\u6570\u636e\u7c7b\u578b&#xff0c;\u53d6\u4e00\u4e2a\u7edf\u4e00\u7684\u540d\u5b57\u3002<\/li>\n<li>**chatserverdef.h&#xff1a;**typeof\u4e00\u4e9b\u57fa\u672c\u7c7b\u578b&#xff0c;\u5b9a\u4e49\u4e00\u4e9bchatserver\u7528\u5230\u7684\u5e38\u91cf\u3002<\/li>\n<li>**commonfunc.cpp&#xff1a;**\u4e00\u4e9b\u516c\u7528\u51fd\u6570\u5b9e\u73b0\u3002<\/li>\n<li>**commonfunc.h&#xff1a;**\u4e00\u4e9b\u516c\u7528\u51fd\u6570\u5b9a\u4e49\u3002<\/li>\n<li>**configcommon.h&#xff1a;**\u5b9a\u4e49\u5b9e\u73b0\u4e00\u4e9bstatic\u7684\u64cd\u4f5cjson\u5bf9\u8c61\u83b7\u53d6\/\u4fee\u6539\u7684\u51fd\u6570&#xff0c;\u5b9a\u4e49\u4e00\u4e2aConfigElementBase\u8bfb\u53d6\u548c\u4fee\u6539\u53c2\u6570\u7684json\u57fa\u7c7b\u3002<\/li>\n<li>**errornum.h&#xff1a;**\u679a\u4e3e\u4e86\u6240\u6709\u9519\u8bef\u7801\u5bf9\u5e94\u7684\u7f16\u53f7\u3002<\/li>\n<li>**globaldef.h&#xff1a;**\u5b9a\u4e49\u5404\u4e2a\u6a21\u5757\u7684\u4e00\u4e9b\u5e38\u91cf\u548c\u679a\u4e3e\u3002<\/li>\n<li>**logindef.h&#xff1a;**\u5b9a\u4e49\u4e86loginserver\u7528\u5230\u7684\u5e38\u91cf\u3002<\/li>\n<li>**noticenum.h&#xff1a;**\u679a\u4e3e\u4e86\u901a\u77e5\u7c7b\u578b\u548c\u5bf9\u5e94\u7684\u7f16\u53f7\u3002<\/li>\n<li>**serverclmempool.cpp&#xff1a;**\u7ee7\u627f\u81eaCLMemPool&#xff0c;\u4f7f\u7528\u5230\u4e86\u8fd9\u4e2a\u5185\u5b58\u5206\u914d\u5668\u7b56\u7565&#xff0c;\u91cd\u8f7d\u4e86new\u548cdelete\u5173\u952e\u5b57\u3002<\/li>\n<li>**serverclmempool.h&#xff1a;**\u7ee7\u627f\u81eaCLMemPool&#xff0c;\u4f7f\u7528\u5230\u4e86\u8fd9\u4e2a\u5185\u5b58\u5206\u914d\u5668\u7b56\u7565&#xff0c;\u91cd\u8f7d\u4e86new\u548cdelete\u5173\u952e\u5b57\u3002<\/li>\n<li>**servercommon.cpp&#xff1a;**\u5b9a\u4e49\u4e00\u4e9b\u5de5\u5177\u51fd\u6570&#xff0c;\u5982GetSessionKey&#xff1b;InvalidCharFilte&#xff1b;PlatNameProcess&#xff1b;GetIPStr&#xff1b;GetServerStartUpKey&#xff1b;GetValueByBitMark&#xff1b;GetValueByLeftBit&#xff1b;GetValueByRightBit&#xff1b;GetNameStr\u3002<\/li>\n<li>**servercommon.h&#xff1a;**\u5b9a\u4e49\u4e00\u4e9b\u6a21\u5757&#xff08;\u5982chatserver&#xff09;\u7528\u5230\u7684\u5e38\u91cf\u548c\u679a\u4e3e\u3002<\/li>\n<li>**serverdef.h&#xff1a;**\u5b9a\u4e49\u4e00\u4e9b\u5e38\u91cf&#xff0c;\u5b9a\u4e49\u4ee3\u8868server\u6216\u8005\u7528\u6237\u7684\u7c7b\u7ed3\u6784\u4f53&#xff0c;\u5982PServerID&#xff1b;GSNetID&#xff1b;UserID&#xff1b;PServerSceneID&#xff1b;PServerArmyID&#xff1b;PServerTeamIndex&#xff1b;CheckPointRecord\u3002<\/li>\n<li>**turnfightdef.h&#xff1a;**\u5b9a\u4e49\u5e38\u91cf&#xff0c;\u7c7b\u7ed3\u6784\u4f53FightResultInfo&#xff1b;PServerRoomKey\u3002<\/li>\n<li>**turnfightsizedef.h&#xff1a;**\u5b9a\u4e49\u6218\u6597\u961f\u4f0d\u76f8\u5173\u5e38\u91cf\u3002<\/li>\n<li>**unstdstaticcheck.h&#xff1a;**\u5b9a\u4e49\u68c0\u67e5\u7c7b\u578b\u7684\u51fd\u6570\u3002<\/li>\n<\/ul>\n<h4>\u76ee\u5f55\u7ed3\u6784\u5c55\u5f00<\/h4>\n<p>\u2502  basedef.h<br \/>\n\u2502  chatserverdef.h<br \/>\n\u2502  commonfunc.cpp<br \/>\n\u2502  commonfunc.h<br \/>\n\u2502  configcommon.h<br \/>\n\u2502  errornum.h<br \/>\n\u2502  globaldef.h<br \/>\n\u2502  logindef.h<br \/>\n\u2502  noticenum.h<br \/>\n\u2502  serverclmempool.cpp<br \/>\n\u2502  serverclmempool.h<br \/>\n\u2502  servercommon.cpp<br \/>\n\u2502  servercommon.h<br \/>\n\u2502  serverdef.h<br \/>\n\u2502  tree.txt<br \/>\n\u2502  turnfightdef.h<br \/>\n\u2502  turnfightsizedef.h<br \/>\n\u2502  unstdstaticcheck.h<br \/>\n\u2502<br \/>\n\u251c\u2500attributecommon<br \/>\n\u2502      attributecommon.cpp<br \/>\n\u2502      attributecommon.h<br \/>\n\u2502<br \/>\n\u251c\u2500darmi<br \/>\n\u2502      dacenter.h<br \/>\n\u2502      dacommon.h<br \/>\n\u2502      dalogin.h<br \/>\n\u2502      damodule.h<br \/>\n\u2502      darole.h<br \/>\n\u2502      dasystem.h<br \/>\n\u2502      rmicommonclient.cpp<br \/>\n\u2502      rmicommonclient.h<br \/>\n\u2502      rmisystemclient.cpp<br \/>\n\u2502      rmisystemclient.h<br \/>\n\u2502<br \/>\n\u251c\u2500internalprotocal<br \/>\n\u2502      clglobalprotocal.h<br \/>\n\u2502      crossprotocal.h<br \/>\n\u2502      gcprotocal.h<br \/>\n\u2502      gcrossprotocal.h<br \/>\n\u2502      gdataprotocal.h<br \/>\n\u2502      gglobalprotocal.h<br \/>\n\u2502      ggprotocal.h<br \/>\n\u2502      lglobalprotocal.h<br \/>\n\u2502      lgprotocal.h<br \/>\n\u2502      lwprotocal.h<br \/>\n\u2502      rankprotocal.h<br \/>\n\u2502      readme.txt<br \/>\n\u2502      wgprotocal.h<br \/>\n\u2502<br \/>\n\u251c\u2500itemcommon<br \/>\n\u2502      itemcommonstruct.cpp<br \/>\n\u2502      itemcommonstruct.h<br \/>\n\u2502<br \/>\n\u251c\u2500jsonparser<br \/>\n\u2502      jsonconfig.cpp<br \/>\n\u2502      jsonconfig.h<br \/>\n\u2502      jsondatamanager.cpp<br \/>\n\u2502      jsondatamanager.h<br \/>\n\u2502      jsondatatypedef.h<br \/>\n\u2502      jsonparser.cpp<br \/>\n\u2502      jsonparser.h<br \/>\n\u2502<br \/>\n\u251c\u2500netprotocalbuff<br \/>\n\u2502      netprotocalbuff.cpp<br \/>\n\u2502      netprotocalbuff.h<br \/>\n\u2502<br \/>\n\u251c\u2500serverconfig<br \/>\n\u2502      configstruct.cpp<br \/>\n\u2502      configstruct.h<br \/>\n\u2502      serverconfigpool.cpp<br \/>\n\u2502      serverconfigpool.h<br \/>\n\u2502<br \/>\n\u251c\u2500string<br \/>\n\u2502      crossstr.h<br \/>\n\u2502      gamestring.cpp<br \/>\n\u2502      gameworldstr.h<br \/>\n\u2502      globalstr.h<br \/>\n\u2502      namecommonstr.cpp<br \/>\n\u2502      namecommonstr.h<br \/>\n\u2502<br \/>\n\u251c\u2500struct<br \/>\n\u2502  \u2502  activitycrazyweekparam.cpp<br \/>\n\u2502  \u2502  activitycrazyweekparam.h<br \/>\n\u2502  \u2502  activitydiscountgiftbagparam.cpp<br \/>\n\u2502  \u2502  activitydiscountgiftbagparam.h<br \/>\n\u2502  \u2502  activitylimitsummonparam.cpp<br \/>\n\u2502  \u2502  activitylimitsummonparam.h<br \/>\n\u2502  \u2502  activitymysticgroceryparam.cpp<br \/>\n\u2502  \u2502  activitymysticgroceryparam.h<br \/>\n\u2502  \u2502  activitypyramidparam.cpp<br \/>\n\u2502  \u2502  activitypyramidparam.h<br \/>\n\u2502  \u2502  activitysignrewardparam.cpp<br \/>\n\u2502  \u2502  activitysignrewardparam.h<br \/>\n\u2502  \u2502  activitysummonrewardparam.cpp<br \/>\n\u2502  \u2502  activitysummonrewardparam.h<br \/>\n\u2502  \u2502  activitytimelimitchargeparam.cpp<br \/>\n\u2502  \u2502  activitytimelimitchargeparam.h<br \/>\n\u2502  \u2502  activitytimelimitgiftbagparam.cpp<br \/>\n\u2502  \u2502  activitytimelimitgiftbagparam.h<br \/>\n\u2502  \u2502  activitytimelimitstoreparam.cpp<br \/>\n\u2502  \u2502  activitytimelimitstoreparam.h<br \/>\n\u2502  \u2502  activityupstarrewardparam.cpp<br \/>\n\u2502  \u2502  activityupstarrewardparam.h<br \/>\n\u2502  \u2502  activityweeklycardparam.cpp<br \/>\n\u2502  \u2502  activityweeklycardparam.h<br \/>\n\u2502  \u2502  activitywindbellprayparam.cpp<br \/>\n\u2502  \u2502  activitywindbellprayparam.h<br \/>\n\u2502  \u2502  activitywishrewardparam.cpp<br \/>\n\u2502  \u2502  activitywishrewardparam.h<br \/>\n\u2502  \u2502  arenabetparam.cpp<br \/>\n\u2502  \u2502  arenabetparam.h<br \/>\n\u2502  \u2502  battlevideoparam.cpp<br \/>\n\u2502  \u2502  battlevideoparam.h<br \/>\n\u2502  \u2502  blackparam.cpp<br \/>\n\u2502  \u2502  blackparam.h<br \/>\n\u2502  \u2502  challengearenaparam.cpp<br \/>\n\u2502  \u2502  challengearenaparam.h<br \/>\n\u2502  \u2502  changegsstruct.cpp<br \/>\n\u2502  \u2502  changegsstruct.h<br \/>\n\u2502  \u2502  checkpointmgrparam.cpp<br \/>\n\u2502  \u2502  checkpointmgrparam.h<br \/>\n\u2502  \u2502  dailytaskparam.cpp<br \/>\n\u2502  \u2502  dailytaskparam.h<br \/>\n\u2502  \u2502  developsysparam.cpp<br \/>\n\u2502  \u2502  developsysparam.h<br \/>\n\u2502  \u2502  dimenparam.cpp<br \/>\n\u2502  \u2502  dimenparam.h<br \/>\n\u2502  \u2502  divineadventureparam.cpp<br \/>\n\u2502  \u2502  divineadventureparam.h<br \/>\n\u2502  \u2502  effectparam.cpp<br \/>\n\u2502  \u2502  effectparam.h<br \/>\n\u2502  \u2502  elementtemplateparam.cpp<br \/>\n\u2502  \u2502  elementtemplateparam.h<br \/>\n\u2502  \u2502  endlessroadparam.cpp<br \/>\n\u2502  \u2502  endlessroadparam.h<br \/>\n\u2502  \u2502  enemyparam.cpp<br \/>\n\u2502  \u2502  enemyparam.h<br \/>\n\u2502  \u2502  fighterbookfettersparam.cpp<br \/>\n\u2502  \u2502  fighterbookfettersparam.h<br \/>\n\u2502  \u2502  fighterparam.cpp<br \/>\n\u2502  \u2502  fighterparam.h<br \/>\n\u2502  \u2502  friendparam.cpp<br \/>\n\u2502  \u2502  friendparam.h<br \/>\n\u2502  \u2502  gatepassparam.cpp<br \/>\n\u2502  \u2502  gatepassparam.h<br \/>\n\u2502  \u2502  godequipstoreparam.cpp<br \/>\n\u2502  \u2502  godequipstoreparam.h<br \/>\n\u2502  \u2502  heavensplogicparam.cpp<br \/>\n\u2502  \u2502  heavensplogicparam.h<br \/>\n\u2502  \u2502  heroconveneparam.cpp<br \/>\n\u2502  \u2502  heroconveneparam.h<br \/>\n\u2502  \u2502  heromanagerparam.cpp<br \/>\n\u2502  \u2502  heromanagerparam.h<br \/>\n\u2502  \u2502  illustrationparam.cpp<br \/>\n\u2502  \u2502  illustrationparam.h<br \/>\n\u2502  \u2502  itemlistparam.cpp<br \/>\n\u2502  \u2502  itemlistparam.h<br \/>\n\u2502  \u2502  kaifurewardparam.cpp<br \/>\n\u2502  \u2502  kaifurewardparam.h<br \/>\n\u2502  \u2502  kaifurushrankparam.cpp<br \/>\n\u2502  \u2502  kaifurushrankparam.h<br \/>\n\u2502  \u2502  knapsackparam.cpp<br \/>\n\u2502  \u2502  knapsackparam.h<br \/>\n\u2502  \u2502  leaderboardparam.cpp<br \/>\n\u2502  \u2502  leaderboardparam.h<br \/>\n\u2502  \u2502  lotterysystemparam.cpp<br \/>\n\u2502  \u2502  lotterysystemparam.h<br \/>\n\u2502  \u2502  marketparam.cpp<br \/>\n\u2502  \u2502  marketparam.h<br \/>\n\u2502  \u2502  newplayerguideparam.cpp<br \/>\n\u2502  \u2502  newplayerguideparam.h<br \/>\n\u2502  \u2502  noahsailparam.cpp<br \/>\n\u2502  \u2502  noahsailparam.h<br \/>\n\u2502  \u2502  otherdata1param.cpp<br \/>\n\u2502  \u2502  otherdata1param.h<br \/>\n\u2502  \u2502  otherdata2param.cpp<br \/>\n\u2502  \u2502  otherdata2param.h<br \/>\n\u2502  \u2502  otherlogicparam.cpp<br \/>\n\u2502  \u2502  otherlogicparam.h<br \/>\n\u2502  \u2502  platcommonparam.cpp<br \/>\n\u2502  \u2502  platcommonparam.h<br \/>\n\u2502  \u2502  praiseparam.cpp<br \/>\n\u2502  \u2502  praiseparam.h<br \/>\n\u2502  \u2502  presentparam.cpp<br \/>\n\u2502  \u2502  presentparam.h<br \/>\n\u2502  \u2502  preventaddictedparam.cpp<br \/>\n\u2502  \u2502  preventaddictedparam.h<br \/>\n\u2502  \u2502  recorderparam.cpp<br \/>\n\u2502  \u2502  recorderparam.h<br \/>\n\u2502  \u2502  resonancecrytalparam.cpp<br \/>\n\u2502  \u2502  resonancecrytalparam.h<br \/>\n\u2502  \u2502  roleachievementparam.cpp<br \/>\n\u2502  \u2502  roleachievementparam.h<br \/>\n\u2502  \u2502  roleallstruct.cpp<br \/>\n\u2502  \u2502  roleallstruct.h<br \/>\n\u2502  \u2502  rolearmyparam.cpp<br \/>\n\u2502  \u2502  rolearmyparam.h<br \/>\n\u2502  \u2502  rolefacadeparam.cpp<br \/>\n\u2502  \u2502  rolefacadeparam.h<br \/>\n\u2502  \u2502  rolefighthorseparam.cpp<br \/>\n\u2502  \u2502  rolefighthorseparam.h<br \/>\n\u2502  \u2502  rolefightpetparam.cpp<br \/>\n\u2502  \u2502  rolefightpetparam.h<br \/>\n\u2502  \u2502  rolegodbeastparam.cpp<br \/>\n\u2502  \u2502  rolegodbeastparam.h<br \/>\n\u2502  \u2502  roleinfolist.cpp<br \/>\n\u2502  \u2502  roleinfolist.h<br \/>\n\u2502  \u2502  roleinitparam.cpp<br \/>\n\u2502  \u2502  roleinitparam.h<br \/>\n\u2502  \u2502  rolerewardparam.cpp<br \/>\n\u2502  \u2502  rolerewardparam.h<br \/>\n\u2502  \u2502  roletitleparam.cpp<br \/>\n\u2502  \u2502  roletitleparam.h<br \/>\n\u2502  \u2502  runemanagerparam.cpp<br \/>\n\u2502  \u2502  runemanagerparam.h<br \/>\n\u2502  \u2502  settingparam.cpp<br \/>\n\u2502  \u2502  settingparam.h<br \/>\n\u2502  \u2502  sevendaystargetparam.cpp<br \/>\n\u2502  \u2502  sevendaystargetparam.h<br \/>\n\u2502  \u2502  shenyusplogicparam.cpp<br \/>\n\u2502  \u2502  shenyusplogicparam.h<br \/>\n\u2502  \u2502  shopparam.cpp<br \/>\n\u2502  \u2502  shopparam.h<br \/>\n\u2502  \u2502  skilllistparam.cpp<br \/>\n\u2502  \u2502  skilllistparam.h<br \/>\n\u2502  \u2502  squadsparam.cpp<br \/>\n\u2502  \u2502  squadsparam.h<br \/>\n\u2502  \u2502  squaredparam.cpp<br \/>\n\u2502  \u2502  squaredparam.h<br \/>\n\u2502  \u2502  structsizedef.h<br \/>\n\u2502  \u2502  sviplogicparam.cpp<br \/>\n\u2502  \u2502  sviplogicparam.h<br \/>\n\u2502  \u2502  taskrewardparam.cpp<br \/>\n\u2502  \u2502  taskrewardparam.h<br \/>\n\u2502  \u2502  templateparam.h<br \/>\n\u2502  \u2502  tradeparam.cpp<br \/>\n\u2502  \u2502  tradeparam.h<br \/>\n\u2502  \u2502  vipparam.cpp<br \/>\n\u2502  \u2502  vipparam.h<br \/>\n\u2502  \u2502  weekendwelfareparam.cpp<br \/>\n\u2502  \u2502  weekendwelfareparam.h<br \/>\n\u2502  \u2502<br \/>\n\u2502  \u251c\u2500army<br \/>\n\u2502  \u2502      armyactivityparam.cpp<br \/>\n\u2502  \u2502      armyactivityparam.h<br \/>\n\u2502  \u2502      armyallstruct.cpp<br \/>\n\u2502  \u2502      armyallstruct.h<br \/>\n\u2502  \u2502      armyapplylist.cpp<br \/>\n\u2502  \u2502      armyapplylist.h<br \/>\n\u2502  \u2502      armyauctionparam.cpp<br \/>\n\u2502  \u2502      armyauctionparam.h<br \/>\n\u2502  \u2502      armybossparam.cpp<br \/>\n\u2502  \u2502      armybossparam.h<br \/>\n\u2502  \u2502      armycontendparam.cpp<br \/>\n\u2502  \u2502      armycontendparam.h<br \/>\n\u2502  \u2502      armyflowerparam.cpp<br \/>\n\u2502  \u2502      armyflowerparam.h<br \/>\n\u2502  \u2502      armyhefuactivityparam.cpp<br \/>\n\u2502  \u2502      armyhefuactivityparam.h<br \/>\n\u2502  \u2502      armyhuntingparam.cpp<br \/>\n\u2502  \u2502      armyhuntingparam.h<br \/>\n\u2502  \u2502      armyimpeachparam.cpp<br \/>\n\u2502  \u2502      armyimpeachparam.h<br \/>\n\u2502  \u2502      armyinitparam.cpp<br \/>\n\u2502  \u2502      armyinitparam.h<br \/>\n\u2502  \u2502      armymemberlist.cpp<br \/>\n\u2502  \u2502      armymemberlist.h<br \/>\n\u2502  \u2502      armyredpaperparam.cpp<br \/>\n\u2502  \u2502      armyredpaperparam.h<br \/>\n\u2502  \u2502      armyrobberparam.cpp<br \/>\n\u2502  \u2502      armyrobberparam.h<br \/>\n\u2502  \u2502      armyshopparam.cpp<br \/>\n\u2502  \u2502      armyshopparam.h<br \/>\n\u2502  \u2502      armywarehouseparam.cpp<br \/>\n\u2502  \u2502      armywarehouseparam.h<br \/>\n\u2502  \u2502<br \/>\n\u2502  \u2514\u2500system<br \/>\n\u2502          chargeplanlist.cpp<br \/>\n\u2502          chargeplanlist.h<br \/>\n\u2502          cmdlist.cpp<br \/>\n\u2502          cmdlist.h<br \/>\n\u2502          publicnoticelist.cpp<br \/>\n\u2502          publicnoticelist.h<br \/>\n\u2502<br \/>\n\u251c\u2500time<br \/>\n\u2502      tmtime.h<br \/>\n\u2502<br \/>\n\u251c\u2500turnfightcommon<br \/>\n\u2502      battlecompeletelogic.cpp<br \/>\n\u2502      battlecompeletelogic.h<br \/>\n\u2502      squads.cpp<br \/>\n\u2502      squads.h<br \/>\n\u2502      team.cpp<br \/>\n\u2502      team.h<br \/>\n\u2502<br \/>\n\u2514\u2500userprotocal<br \/>\n        chatmsgcode.h<br \/>\n        crosslogicmsgcode.h<br \/>\n        globalmsgcode.h<br \/>\n        loginmsgcode.h<br \/>\n        msgcode.h<br \/>\n        msgheader.h<br \/>\n        msgsystem.h<br \/>\n        systemmsgcode.h<br \/>\n        turnfightmsgcode.h<\/p>\n<h5>\/attributecommon<\/h5>\n<ul>\n<li>**attributecommon&#xff1a;**\u5b9a\u4e49\u89d2\u8272\u5c5e\u6027\u7684\u7c7b&#xff0c;AttributeCommonFirst&#xff1b;AttributeCommonSecond&#xff1b;AttributeCommonPercent\u3002\u8fd9\u4e9b\u7c7b\u91cc\u63d0\u4f9b\u5e8f\u5217\u5316\/\u53cd\u5e8f\u5217\u5316&#xff0c;\u83b7\u53d6\/\u4fee\u6539\u5c5e\u6027\u503c&#xff0c;\u6bd4\u8f83\u5c5e\u6027\u503c\u5927\u5c0f\u7b49\u65b9\u6cd5\u3002<\/li>\n<\/ul>\n<h5>\/darmi<\/h5>\n<ul>\n<li>**dacenter&#xff1a;**\u5b9a\u4e49\u547d\u540d\u7a7a\u95f4dataaccessrmi::center\u4e0b\u7684\u9759\u6001\u5e38\u91cf&#xff0c;\u8868\u793a\u8be5\u6a21\u5757\u4e0b\u7684RMI\u51fd\u6570\u3002<\/li>\n<li>**dacommon&#xff1a;**\u5b9a\u4e49\u547d\u540d\u7a7a\u95f4dataaccessrmi::common\u4e0b\u7684\u9759\u6001\u5e38\u91cf&#xff0c;\u8868\u793a\u8be5\u6a21\u5757\u4e0b\u7684RMI\u51fd\u6570\u3002<\/li>\n<li>**dalogin&#xff1a;**\u5b9a\u4e49\u547d\u540d\u7a7a\u95f4dataaccessrmi::login\u4e0b\u7684\u9759\u6001\u5e38\u91cf&#xff0c;\u8868\u793a\u8be5\u6a21\u5757\u4e0b\u7684RMI\u51fd\u6570\u3002<\/li>\n<li>**damodule&#xff1a;**\u5b9a\u4e49\u547d\u540d\u7a7a\u95f4dataaccessrmi\u4e0b\u7684\u9759\u6001\u5e38\u91cf&#xff0c;\u8868\u793aRMI\u7684\u6a21\u5757\u79cd\u7c7bLogin&#xff1b;Role&#xff1b;Center&#xff1b;System&#xff1b;Common\u3002<\/li>\n<li>**darole&#xff1a;**\u5b9a\u4e49\u547d\u540d\u7a7a\u95f4dataaccessrmi::role\u4e0b\u7684\u9759\u6001\u5e38\u91cf&#xff0c;\u8868\u793a\u8be5\u6a21\u5757\u4e0b\u7684RMI\u51fd\u6570\u3002<\/li>\n<li>**dasystem&#xff1a;**\u5b9a\u4e49\u547d\u540d\u7a7a\u95f4dataaccessrmi::system\u4e0b\u7684\u9759\u6001\u5e38\u91cf&#xff0c;\u8868\u793a\u8be5\u6a21\u5757\u4e0b\u7684RMI\u51fd\u6570\u3002<\/li>\n<li>**rmicommonclient&#xff1a;**RMI\u8bf7\u6c42\u7c7b&#xff0c;RMICommonClient&#xff1b;RMI\u56de\u8c03\u7c7bRMIServerStatusInitBackObject&#xff1b;RMIServerStatusSaveBackObject\u3002<\/li>\n<li>**rmisystemclient&#xff1a;**RMI\u8bf7\u6c42\u7c7b&#xff0c;RMISystemClient&#xff1b;RMI\u56de\u8c03\u7c7bRMIGetPublicNoticeBackObject&#xff1b;RMIGetCmdBackObject\u3002<\/li>\n<\/ul>\n<h5>\/internalprotocal<\/h5>\n<p>\u8bf4\u660e&#xff1a;<\/p>\n<p>ggameserver<br \/>\nllogin<br \/>\nwgateway<br \/>\ncchatserver<br \/>\nglobalglobalserver<br \/>\ncentercenterserver<br \/>\nrankrank<br \/>\ncrosscross<\/p>\n<p>20000 gcprotocal<br \/>\n21000 gglobalprotocal<br \/>\n22000 ggprotocal<br \/>\n23000 lgprotocal<br \/>\n24000 lglobalprotocal<br \/>\n25000 gcrossprotocal<br \/>\n26000 rankprotocal<br \/>\n27000 crossprotocal<br \/>\n28000 gdataprotocal<\/p>\n<ul>\n<li>**clglobalprotocal&#xff1a;**\u5b9a\u4e49 chatserver-login-globalserver \u679a\u4e3e&#xff0c;\u8bf7\u6c42\u4f53\u7ed3\u6784\u4f53\u7b49\u6570\u636e\u7ed3\u6784\u3002<\/li>\n<li>**crossprotocal&#xff1a;**\u5b9a\u4e49 cross \u679a\u4e3e&#xff0c;\u8bf7\u6c42\u4f53\u7ed3\u6784\u4f53\u7b49\u6570\u636e\u7ed3\u6784\u3002<\/li>\n<li>**gcprotocal&#xff1a;**\u5b9a\u4e49 gameserver-chatserver \u679a\u4e3e&#xff0c;\u901a\u4fe1\u534f\u8bae\u7ed3\u6784\u4f53\u7b49\u6570\u636e\u7ed3\u6784\u3002<\/li>\n<li>**gcrossprotocal&#xff1a;**\u5b9a\u4e49 gameserver-cross \u679a\u4e3e&#xff0c;\u901a\u4fe1\u534f\u8bae\u7ed3\u6784\u4f53\u7b49\u6570\u636e\u7ed3\u6784\u3002<\/li>\n<li>**gdataprotocal&#xff1a;**\u5b9a\u4e49 gameserver-dataserver \u679a\u4e3e&#xff0c;\u901a\u4fe1\u534f\u8bae\u7ed3\u6784\u4f53\u7b49\u6570\u636e\u7ed3\u6784\u3002<\/li>\n<li>**gglobalprotocal&#xff1a;**\u5b9a\u4e49 gameserver-globalserver \u679a\u4e3e&#xff0c;\u901a\u4fe1\u534f\u8bae\u7ed3\u6784\u4f53\u7b49\u6570\u636e\u7ed3\u6784\u3002<\/li>\n<li>**ggprotocal&#xff1a;**\u5b9a\u4e49 gameserver-gameserver \u679a\u4e3e&#xff0c;\u901a\u4fe1\u534f\u8bae\u7ed3\u6784\u4f53\u7b49\u6570\u636e\u7ed3\u6784\u3002<\/li>\n<li>**lglobalprotocal&#xff1a;**\u5b9a\u4e49 loginserver-globalserver \u679a\u4e3e&#xff0c;\u901a\u4fe1\u534f\u8bae\u7ed3\u6784\u4f53\u7b49\u6570\u636e\u7ed3\u6784\u3002<\/li>\n<li>**lgprotocal&#xff1a;**\u5b9a\u4e49 loginserver-gameserver \u679a\u4e3e&#xff0c;\u901a\u4fe1\u534f\u8bae\u7ed3\u6784\u4f53\u7b49\u6570\u636e\u7ed3\u6784\u3002<\/li>\n<li>**lwprotocal&#xff1a;**\u5b9a\u4e49 loginserver-gateway \u679a\u4e3e&#xff0c;\u901a\u4fe1\u534f\u8bae\u7ed3\u6784\u4f53\u7b49\u6570\u636e\u7ed3\u6784\u3002<\/li>\n<li>**rankprotocal&#xff1a;**\u5b9a\u4e49 rank \u679a\u4e3e&#xff0c;\u901a\u4fe1\u534f\u8bae\u7ed3\u6784\u4f53\u7b49\u6570\u636e\u7ed3\u6784\u3002<\/li>\n<li>**wgprotocal&#xff1a;**\u5b9a\u4e49 gateway-gameserver \u679a\u4e3e&#xff0c;\u901a\u4fe1\u534f\u8bae\u7ed3\u6784\u4f53\u7b49\u6570\u636e\u7ed3\u6784\u3002<\/li>\n<\/ul>\n<h5>\/itemcommon<\/h5>\n<p>**itemcommonstruct&#xff1a;**\u5b9a\u4e49\u7269\u54c1\u76f8\u5173\u5c5e\u6027\u7ed3\u6784\u4f53ItemCommonAttr&#xff1b;HeroCommonAttr&#xff1b;CommonItemInfo&#xff1b;MsgItemInfo\u3002\u8fd9\u4e9b\u7c7b\u91cc\u63d0\u4f9b\u5e8f\u5217\u5316\/\u53cd\u5e8f\u5217\u5316&#xff0c;\u83b7\u53d6\/\u4fee\u6539\u5c5e\u6027\u503c&#xff0c;\u6bd4\u8f83\u5c5e\u6027\u503c\u5927\u5c0f\u7b49\u65b9\u6cd5\u3002<\/p>\n<h5>\/jsonparser<\/h5>\n<ul>\n<li>**jsonconfig&#xff1a;**\u5b9a\u4e49json\u5904\u7406\u76f8\u5173\u7c7bJsonItem&#xff1b;JsonConfigCheckHelper&#xff1b;JsonConfigChecker\u3002\u5b9a\u4e49\u4e00\u7cfb\u5217json\u68c0\u67e5\u7684\u51fd\u6570\u3002<\/li>\n<li>**jsondatamanager&#xff1a;**\u5b9a\u4e49\u4e24\u4e2a\u7c7b&#xff0c;JsonData&#xff1b;JsonDataManager&#xff1b;\u5176\u4e2dJsonDataManager\u4e2d\u6301\u6709JsonData&#xff0c;\u5728\u8bfb\u53d6\u5b8cjson\u6570\u636e\u540e\u4fdd\u5b58\u3002\u6709RMI\u56de\u8c03\u65b9\u6cd5&#xff0c;\u6536\u5230RMI\u56de\u8c03\u65b9\u6cd5\u65f6\u8bfb\u53d6\u6216\u4fdd\u5b58json\u6570\u636e\u3002<\/li>\n<li>**jsondatatypedef&#xff1a;**\u5b9a\u4e49json\u6570\u636e\u7c7b\u578b\u5e38\u91cf\u3002<\/li>\n<li>**jsonparser&#xff1a;**\u5b9a\u4e49\u7c7bJsonParser&#xff0c;\u63d0\u4f9b\u65b9\u6cd5Init&#xff1b;InitFromFile&#xff1b;GetListLength&#xff1b;Down&#xff1b;Up&#xff1b;ObjGetBoolean&#xff1b;ObjGetInt&#xff1b;ObjGetDouble&#xff1b;ObjGetString&#xff1b;ObjSetBoolean&#xff1b;ObjSetInt&#xff1b;ObjSetDouble&#xff1b;ObjSetString&#xff1b;ObjSetObjAndDown&#xff1b;ObjSetArrayAndDown&#xff1b;ArrayGetBoolean&#xff1b;ArrayGetInt&#xff1b;ArrayGetDouble&#xff1b;ArrayGetString&#xff1b;ArraySetBoolean&#xff1b;ArraySetInt&#xff1b;ArraySetDouble&#xff1b;ArraySetString&#xff1b;ArraySetObjAndDown&#xff1b;ArraySetArrayAndDown&#xff1b;ArrayPushBackBoolean&#xff1b;ArrayPushBackInt&#xff1b;ArrayPushBackDouble&#xff1b;ArrayPushBackString&#xff1b;ArrayPushBackObjAndDown&#xff1b;ArrayPushBackArrayAndDown&#xff1b;ArrayPushBackMsgSquads&#xff1b;ArrayGetMsgSquads&#xff1b;SaveInFile&#xff1b;ToJsonString\u7b49\u4fdd\u5b58\u4ee5\u53ca\u64cd\u4f5cjson\u91cc\u9762\u5143\u7d20\u7684\u65b9\u6cd5\u3002<\/li>\n<\/ul>\n<h5>\/netprotocalbuff<\/h5>\n<ul>\n<li>**netprotocalbuff&#xff1a;**\u5b9a\u4e49\u7c7bNetProtocalBuff&#xff0c;\u91cc\u9762\u6301\u6709g_protocal_buff\u3002\u63d0\u4f9b\u65b9\u6cd5WriteBegin&#xff1b;WriteFmt&#xff1b;WriteChar&#xff1b;WriteUChar&#xff1b;WriteShort&#xff1b;WriteUShort&#xff1b;WriteInt&#xff1b;WriteUInt&#xff1b;WriteLL&#xff1b;WriteULL&#xff1b;WriteFloat&#xff1b;WriteDouble&#xff1b;WriteString\u8fd9\u4e9b\u65b9\u6cd5\u90fd\u662f\u5f80g_protocal_buff\u91cc\u9762\u5199\u5165\u7684\u3002GetProtocalBuff\u8fd9\u4e2a\u65b9\u6cd5\u8fd4\u56deg_protocal_buff\u7684\u5185\u5bb9&#xff0c;GetProtocalBuffLen\u8fd9\u4e2a\u65b9\u6cd5\u8fd4\u56deg_protocal_buff\u7684\u957f\u5ea6\u3002<\/li>\n<\/ul>\n<h5>\/serverconfig<\/h5>\n<ul>\n<li>**configstruct&#xff1a;**\u5b9a\u4e49\u7c7b\u7ed3\u6784\u4f53NetAddr&#xff1b;DBConfig&#xff1b;DBInnerAddr&#xff1b;DBModuleAddr&#xff1b;TableNameList&#xff1b;IndexList&#xff1b;DBServerAddr&#xff1b;LoginServerInnerAddr&#xff1b;LoginServerAddr&#xff1b;ChatServerAddr&#xff1b;GlobalServerAddr&#xff1b;PushServerAddr&#xff1b;CrossManagerConfig&#xff1b;CrossConfig&#xff1b;IPConfig&#xff1b;ServerTimeOut&#xff1b;ChatChannelCD&#xff1b;WallowConfig&#xff1b;CommonConfig\u3002\u8fd9\u4e9b\u7c7b\u7ed3\u6784\u4f53\u5185\u7684\u53d8\u91cf\u5b58\u50a8\u914d\u7f6e\u7684\u503c&#xff0c;\u65b9\u6cd5\u83b7\u53d6\u6216\u8005\u4fee\u6539\u53d8\u91cf\u3002<\/li>\n<li>**serverconfigpool&#xff1a;**\u5b9a\u4e49\u7c7b\u7ed3\u6784\u4f53ServerConfigPool&#xff0c;\u6301\u6709CommonConfig&#xff0c;\u65b9\u6cd5\u5bf9CommonConfig\u8fdb\u884c\u64cd\u4f5c\u6216\u8005\u8bfb\u53d6\u3002<\/li>\n<\/ul>\n<h5>\/string<\/h5>\n<ul>\n<li>**crossstr&#xff1a;**\u5b9a\u4e49\u4e00\u7cfb\u5217\u5916\u90e8\u53d8\u91cf extern g_cross_xxx\u7b49\u3002<\/li>\n<li>**gamestring&#xff1a;**\u5b9a\u4e49\u4e00\u7cfb\u5217\u5916\u90e8\u53d8\u91cf extern g_xxx_xxx\u7b49\u3002\u5b9a\u4e49\u65b9\u6cd5INIT_GAME_STR\u4ece\u914d\u7f6e\u83b7\u53d6\u503c\u5b58\u5230\u5bf9\u8c61\u4e2d\u3002<\/li>\n<li>**gameworldstr&#xff1a;**\u5b9a\u4e49\u4e00\u7cfb\u5217\u5916\u90e8\u53d8\u91cf extern g_xxx_xxx\u7b49\u3002<\/li>\n<li>**globalstr&#xff1a;**\u5b9a\u4e49\u4e00\u7cfb\u5217\u5916\u90e8\u53d8\u91cf extern g_xxx_xxx\u7b49\u3002<\/li>\n<li>**namecommonstr&#xff1a;**\u5b9a\u4e49\u4e00\u7cfb\u5217\u5916\u90e8\u53d8\u91cf extern g_xxx_xxx\u7b49\u3002<\/li>\n<\/ul>\n<h5>\/struct<\/h5>\n<ul>\n<li>**activitycrazyweekparam&#xff1a;**\u5b9a\u4e49\u7c7b\u7ed3\u6784\u4f53&#xff0c;\u6709\u53d8\u91cf&#xff0c;\u4ee5\u53caSerialize\/Unserialize\u65b9\u6cd5\u3002<\/li>\n<li>**activitydiscountgiftbagparam&#xff1a;**\u5b9a\u4e49\u7c7b\u7ed3\u6784\u4f53&#xff0c;\u6709\u53d8\u91cf&#xff0c;\u4ee5\u53caSerialize\/Unserialize\u65b9\u6cd5\u3002<\/li>\n<li>**activitylimitsummonparam&#xff1a;**\u5b9a\u4e49\u7c7b\u7ed3\u6784\u4f53&#xff0c;\u6709\u53d8\u91cf&#xff0c;\u4ee5\u53caSerialize\/Unserialize\u65b9\u6cd5\u3002<\/li>\n<li>\u2026<\/li>\n<li>**tradeparam&#xff1a;**\u5b9a\u4e49\u7c7b\u7ed3\u6784\u4f53&#xff0c;\u6709\u53d8\u91cf&#xff0c;\u4ee5\u53caSerialize\/Unserialize\u65b9\u6cd5\u3002<\/li>\n<li>**vipparam&#xff1a;**\u5b9a\u4e49\u7c7b\u7ed3\u6784\u4f53&#xff0c;\u6709\u53d8\u91cf&#xff0c;\u4ee5\u53caSerialize\/Unserialize\u65b9\u6cd5\u3002<\/li>\n<li>**weekendwelfareparam&#xff1a;**\u5b9a\u4e49\u7c7b\u7ed3\u6784\u4f53&#xff0c;\u6709\u53d8\u91cf&#xff0c;\u4ee5\u53caSerialize\/Unserialize\u65b9\u6cd5\u3002<\/li>\n<\/ul>\n<h6>\/army<\/h6>\n<ul>\n<li>**armyallstruct&#xff1a;**\u5b9a\u4e49\u7c7b\u7ed3\u6784\u4f53&#xff0c;\u6709\u53d8\u91cf&#xff0c;\u4ee5\u53caSerialize\/Unserialize\u65b9\u6cd5\u3002<\/li>\n<li>**armyapplylist&#xff1a;**\u5b9a\u4e49\u7c7b\u7ed3\u6784\u4f53&#xff0c;\u6709\u53d8\u91cf&#xff0c;\u4ee5\u53caSerialize\/Unserialize\u65b9\u6cd5\u3002<\/li>\n<li>\u2026<\/li>\n<li>**armyshopparam&#xff1a;**\u5b9a\u4e49\u7c7b\u7ed3\u6784\u4f53&#xff0c;\u6709\u53d8\u91cf&#xff0c;\u4ee5\u53caSerialize\/Unserialize\u65b9\u6cd5\u3002<\/li>\n<li>**armywarehouseparam&#xff1a;**\u5b9a\u4e49\u7c7b\u7ed3\u6784\u4f53&#xff0c;\u6709\u53d8\u91cf&#xff0c;\u4ee5\u53caSerialize\/Unserialize\u65b9\u6cd5\u3002<\/li>\n<\/ul>\n<h6>\/system<\/h6>\n<ul>\n<li>**chargeplanlist&#xff1a;**\u5b9a\u4e49\u7c7b\u7ed3\u6784\u4f53&#xff0c;\u6709\u53d8\u91cf&#xff0c;\u4ee5\u53caSerialize\/Unserialize\u65b9\u6cd5\u3002<\/li>\n<li>**\u2026 ****publicnoticelist&#xff1a;**\u5b9a\u4e49\u7c7b\u7ed3\u6784\u4f53&#xff0c;\u6709\u53d8\u91cf&#xff0c;\u4ee5\u53caSerialize\/Unserialize\u65b9\u6cd5\u3002<\/li>\n<\/ul>\n<h5>\/time<\/h5>\n<ul>\n<li>**tmtime&#xff1a;**\u5b9a\u4e49\u7c7b\u7ed3\u6784\u4f53TmTime&#xff0c;\u63d0\u4f9b\u65b9\u6cd5GetYear&#xff1b;GetMonth&#xff1b;GetDate&#xff1b; GetHour&#xff1b;GetMinute&#xff1b;GetSecond&#xff1b;GetWeekDay&#xff1b;GetYearDay\u8fd4\u56de\u5f53\u524d\u65e5\u671f\u65f6\u95f4\u3002<\/li>\n<\/ul>\n<h5>\/turnfightcommon<\/h5>\n<ul>\n<li>**battlecompletelogic&#xff1a;**\u5b9a\u4e49\u4e00\u4e2a\u57fa\u7c7bBattleCompleteLogicBase\u548c\u4e24\u4e2a\u7ee7\u627f\u7c7bChampionRaceBattleCompleteLogic&#xff1b;OfflineBattleCompleteLogic\u3002\u4e24\u4e2a\u7ee7\u627f\u7c7b\u5b8c\u6210\u57fa\u7c7bBattleCompleteLogicBase\u7684OnComplete\u65b9\u6cd5\u3002<\/li>\n<li>**squads&#xff1a;**\u5b9a\u4e49\u7c7b\u7ed3\u6784\u4f53General&#xff1b;Squads&#xff1b;SubSquads&#xff1b;MultiSquads&#xff1b;MsgSquads\u3002\u7c7b\u7ed3\u6784\u4f53\u91cc\u6709\u5e8f\u5217\u5316\/\u53cd\u5e8f\u5217\u5316&#xff0c;jsoninit\/jsonsave&#xff0c;\u4fee\u6539\u53d8\u91cf\u7b49\u65b9\u6cd5\u3002<\/li>\n<li>**team&#xff1a;**\u5b9a\u4e49\u7c7b\u7ed3\u6784\u4f53TeamMember&#xff1b;Team\u3002\u7c7b\u7ed3\u6784\u4f53\u91cc\u6709\u5e8f\u5217\u5316\/\u53cd\u5e8f\u5217\u5316&#xff0c;jsoninit\/jsonsave&#xff0c;\u4fee\u6539\u53d8\u91cf\u7b49\u65b9\u6cd5\u3002<\/li>\n<\/ul>\n<h5>\/userprotocal<\/h5>\n<ul>\n<li>**chatmsgcode&#xff1a;**\u5b9a\u4e49chat\u76f8\u5173\u7684\u901a\u4fe1\u534f\u8bae\u76f8\u5173\u679a\u4e3ecode\u7c7b\u578b\u3002<\/li>\n<li>**crosslogicmsgcode&#xff1a;**\u5b9a\u4e49cross\u76f8\u5173\u7684\u901a\u4fe1\u534f\u8bae\u76f8\u5173\u679a\u4e3ecode\u7c7b\u578b\u3002<\/li>\n<li>**globalmsgcode&#xff1a;**\u5b9a\u4e49global\u76f8\u5173\u7684\u901a\u4fe1\u534f\u8bae\u76f8\u5173\u679a\u4e3ecode\u7c7b\u578b\u3002<\/li>\n<li>**loginmsgcode&#xff1a;**\u5b9a\u4e49login\u76f8\u5173\u7684\u901a\u4fe1\u534f\u8bae\u76f8\u5173\u679a\u4e3ecode\u7c7b\u578b\u3002<\/li>\n<li>**msgcode&#xff1a;**\u5b9a\u4e49gameserver\u76f8\u5173\u7684\u901a\u4fe1\u534f\u8bae\u76f8\u5173\u679a\u4e3ecode\u7c7b\u578b\u3002<\/li>\n<li>**msgheader&#xff1a;**\u5b9a\u4e49MessageHeader\u7c7b\u7ed3\u6784\u4f53&#xff0c;\u6240\u6709\u901a\u4fe1\u534f\u8bae\u4f53\u90fd\u9700\u8981\u8fd9\u4e2a\u7c7b\u7ed3\u6784\u4f53\u5bf9\u8c61\u4f5c\u4e3a\u5934\u90e8\u8bc6\u522b\u3002<\/li>\n<li>**msgsystem&#xff1a;**\u5b9a\u4e49\u7c7b\u7ed3\u6784\u4f53SCSystemMsg&#xff1b;SCNoticeNum&#xff1b;SCZeroHour&#xff1b;SCRebootClient&#xff1b;SCLogoutClientNotice&#xff1b;SCResetWinClientNotice&#xff1b;SCReloadLanguageMask&#xff1b;SCSystemNoticeInfo&#xff1b;\u00a0 \u00a0 class SCCrossLoadSpeakerMsg\u3002\u8fd9\u4e9b\u7c7b\u7ed3\u6784\u4f53\u4f5c\u4e3a\u901a\u4fe1\u534f\u8bae\u7ed3\u6784\u4f53\u3002<\/li>\n<li>**systemmsgcode&#xff1a;**\u5b9a\u4e49system\u76f8\u5173\u7684\u901a\u4fe1\u534f\u8bae\u76f8\u5173\u679a\u4e3ecode\u7c7b\u578b\u3002<\/li>\n<li>**turnfightmsgcode&#xff1a;**\u5b9a\u4e49turnfight\u76f8\u5173\u7684\u901a\u4fe1\u534f\u8bae\u76f8\u5173\u679a\u4e3ecode\u7c7b\u578b\u3002<\/li>\n<\/ul>\n<h3>globalserver<\/h3>\n<p><img decoding=\"async\" src=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2025\/04\/20250418212208-6802c28020add.png\" alt=\"\" \/><\/p>\n<h4>engineadapter<\/h4>\n<ul>\n<li>\u4f7f\u7528\u5c01\u88c5\u6a21\u5757IConfigModule&#xff1b;IGameModule&#xff1b;INetworkModule&#xff1b;IClockModule&#xff1b;ILogModule&#xff1b;IRMIModule&#xff1b;ITimerModule&#xff1b;IConfigModule\u63d0\u4f9b\u7684\u65b9\u6cd5\u3002<\/li>\n<li>\u4e0a\u8ff0\u5c01\u88c5\u6a21\u5757\u63d0\u4f9b\u7684\u65b9\u6cd5\u518d\u6b21\u5c01\u88c5\u5e76\u4e14\u63d0\u4f9b\u63a5\u53e3\u65b9\u6cd5\u7ed9\u5916\u90e8\u4f7f\u7528\n<ul>\n<li>NetSend\/NetSendAll\/NetMulSend\/NetDisconnect\/NetHasCheck&#xff1b;<\/li>\n<li>GetGameTime\/DayID\/Time\/LocalTime\/AscTime&#xff1b;<\/li>\n<li>NextMinuteInterval\/NextHourInterval\/NextDayInterval\/NextWeekInterval\/NextMouthInterval&#xff1b;<\/li>\n<li>GetDifDay\/IsSameDay&#xff1b;<\/li>\n<li>GetWorkPath&#xff1b;StopGame&#xff1b;ConfigSyncValue&#xff1b;<\/li>\n<li>IsThisWeek\/IsThisMonth&#xff1b;<\/li>\n<li>GetSeverStartDifDayNumUntilNow\/GetDifDayNumUntilNow&#xff1b;<\/li>\n<li>IsTargetPlatform\/IsCurDNYPlatform&#xff1b;<\/li>\n<li>RMIObjRegister\/RMICreateSession\/RMICloseSession&#xff1b;<\/li>\n<li>CreateTimer\/CreateTimerSecond\u3002<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h4>internalcomm<\/h4>\n<p>\u4e3b\u8981\u5de5\u4f5c\u662f\u5185\u90e8\u670d\u52a1\u95f4\u7684\u7f51\u7edc\u63a5\u53e3\u5c01\u88c5\u3002NetListen\/NetConnect\/NetConnectAsyn\/NetSend\/NetDisconnect&#xff0c;\u5b9e\u9645\u7528\u5230\u7684\u662fm_internal_network\u91cc\u9762\u7684\u65b9\u6cd5\u3002<\/p>\n<p>SetDBSession\/GetDBSession&#xff0c;\u5b9e\u9645\u7528\u5230\u7684\u662frmi::Session\u3002<\/p>\n<h4>serverconfig.xml<\/h4>\n<p><img decoding=\"async\" src=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2025\/04\/20250418212208-6802c2804296c.png\" alt=\"\" \/><\/p>\n<p>\u5b9a\u4e49\u6a21\u5757\u7684\u4e00\u4e9b\u53d8\u91cf&#xff0c;\u5982jobqueuelength\u6307\u5de5\u4f5c\u961f\u5217\u957f\u5ea6&#xff0c;maxpackagesize\u6307\u6700\u5927\u7f51\u7edc\u5305\u957f\u3002<\/p>\n<h4>globalservermodule<\/h4>\n<p>\u4e3b\u8981\u5de5\u4f5c\u662f\u5c01\u88c5\u4e86\u672c\u6a21\u5757\u7684\u4e00\u4e9b\u65b9\u6cd5&#xff0c;\u65b9\u6cd5\u4e3b\u8981\u5de5\u4f5c&#xff1a;<\/p>\n<p>&#8211; \u2460 \u63d0\u4f9b\u63a5\u53e3ConnectToDBServer\/ConnectToLoginServer\/ConnectToChatServer\/ConnectToDBRMI\u3002\u5206\u522b\u8fde\u63a5\u5230dbserver&#xff0c;loginserver&#xff0c;chatserver&#xff0c;dbserverRMI\u3002<br \/>\n&#8211; \u2461 \u63d0\u4f9b\u63a5\u53e3ListenForGateway\/ListenForGS\u3002\u5206\u522b\u76d1\u542c\u6765\u81eagateway&#xff0c;gameserver\u7684\u6d88\u606f\u3002<br \/>\n&#8211; \u2462 \u6ce8\u518c\u56de\u8c03\u65b9\u6cd5&#xff0c;**&#096;&lt;font style&#061;&#034;color:#DF2A3F;&#034;&gt;&#096;\u6536\u5230\u5ba2\u6237\u7aef\u7f51\u7edc\u8fde\u63a5\u540e&#xff08;ServerNetworkCallback&#xff09;&#096;&lt;\/font&gt;&#096;**<\/p>\n<p>m_network_callback <span class=\"token operator\">&#061;<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token function\">ServerNetworkCallback<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">this<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\nm_network<span class=\"token operator\">-&gt;<\/span><span class=\"token function\">RegisterCallback<\/span><span class=\"token punctuation\">(<\/span>m_network_callback<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><\/p>\n<p><span class=\"token keyword\">class<\/span> <span class=\"token class-name\">ServerNetworkCallback<\/span> <span class=\"token operator\">:<\/span> <span class=\"token base-clause\"><span class=\"token keyword\">public<\/span> <span class=\"token class-name\">IEngineNetCallback<\/span><\/span><br \/>\n<span class=\"token punctuation\">{<\/span><br \/>\n<span class=\"token keyword\">public<\/span><span class=\"token operator\">:<\/span><br \/>\n<span class=\"token function\">ServerNetworkCallback<\/span><span class=\"token punctuation\">(<\/span>GlobalServerModule <span class=\"token operator\">*<\/span>server<span class=\"token punctuation\">)<\/span><span class=\"token operator\">:<\/span><span class=\"token function\">m_server<\/span><span class=\"token punctuation\">(<\/span>server<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token keyword\">virtual<\/span> <span class=\"token operator\">~<\/span><span class=\"token function\">ServerNetworkCallback<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token keyword\">void<\/span> <span class=\"token function\">SetAllowIpPrefix<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">const<\/span> std<span class=\"token operator\">::<\/span>string <span class=\"token operator\">&amp;<\/span>allow_ip_prefix<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span> m_allow_ip_prefix <span class=\"token operator\">&#061;<\/span> allow_ip_prefix<span class=\"token punctuation\">;<\/span> <span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token keyword\">virtual<\/span> <span class=\"token keyword\">void<\/span> <span class=\"token function\">OnAccept<\/span><span class=\"token punctuation\">(<\/span>Port listen_port<span class=\"token punctuation\">,<\/span> NetID netid<span class=\"token punctuation\">,<\/span> IP ip<span class=\"token punctuation\">,<\/span> Port port<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token keyword\">virtual<\/span> <span class=\"token keyword\">void<\/span> <span class=\"token function\">OnRecv<\/span><span class=\"token punctuation\">(<\/span>NetID netid<span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">const<\/span> <span class=\"token keyword\">char<\/span> <span class=\"token operator\">*<\/span>data<span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">int<\/span> length<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token keyword\">virtual<\/span> <span class=\"token keyword\">void<\/span> <span class=\"token function\">OnDisconnect<\/span><span class=\"token punctuation\">(<\/span>NetID netid<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token keyword\">virtual<\/span> <span class=\"token keyword\">void<\/span> <span class=\"token function\">OnConnect<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">bool<\/span> result<span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">int<\/span> handle<span class=\"token punctuation\">,<\/span> NetID netid<span class=\"token punctuation\">,<\/span> IP ip<span class=\"token punctuation\">,<\/span> Port port<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">;<\/span><\/p>\n<p>***OnAccept()**&#xff1a;m_gateway_set.insert(gateway_netid); m_gateway_set\u7ef4\u62a4\u6240\u6709gateway\u5217\u8868\u3002<br \/>\n    * **OnRecv()**&#xff1a;OnUserRecv&#xff0c;\u6839\u636e\u534f\u8bae\u533a\u5206\u662fuser\u903b\u8f91\u8fd8\u662fuser\u65ad\u5f00\u8fde\u63a5\u3002\u5982\u679c\u662fuser\u903b\u8f91\u6839\u636e\u534f\u8bae\u5224\u65ad\u662f\u5426cross&#xff0c;\u5982\u679c\u662f\u8de8\u670d\u53d1\u9001\u5230cross&#xff0c;\u5982\u679c\u662f\u672c\u5730\u903b\u8f91\u6267\u884c &#096;(this-&gt;*m_msg_handler_list[msg_type].func)(netid, user, data); &#096;\u6839\u636e\u534f\u8bae\u7c7b\u578b\u6267\u884c\u5bf9\u5e94\u7684\u56de\u8c03\u51fd\u6570\u3002<br \/>\n    * **OnDisconnect()**&#xff1a;m_gateway_set.erase(gateway_netid); \u5e76\u4e14\u4e0b\u7ebf\u6240\u6709\u901a\u8fc7\u8be5gateway\u901a\u4fe1\u7684gameuser\u3002\u6392\u884c\u699c\u4e0b\u7ebf&#xff0c;army\u4e0b\u7ebf\u7b49\u3002<br \/>\n    * **OnConnect()**&#xff1a;\u7a7a\u3002<br \/>\n&#8211; \u2463 \u6ce8\u518c\u56de\u8c03\u65b9\u6cd5&#xff0c;**&#096;&lt;font style&#061;&#034;color:#DF2A3F;&#034;&gt;&#096;\u6536\u5230\u5185\u90e8\u7f51\u7edc\u8fde\u63a5\u540e&#xff08;ServerInternalNetCallback&#xff09;&#096;&lt;\/font&gt;&#096;**<\/p>\n<p>m_internal_network_callback <span class=\"token operator\">&#061;<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token function\">ServerInternalNetCallback<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">this<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\nm_internal_network<span class=\"token operator\">-&gt;<\/span><span class=\"token function\">RegisterCallback<\/span><span class=\"token punctuation\">(<\/span>m_internal_network_callback<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><\/p>\n<p><span class=\"token keyword\">class<\/span> <span class=\"token class-name\">ServerInternalNetCallback<\/span> <span class=\"token operator\">:<\/span> <span class=\"token base-clause\"><span class=\"token keyword\">public<\/span> <span class=\"token class-name\">IEngineNetCallback<\/span><\/span><br \/>\n<span class=\"token punctuation\">{<\/span><br \/>\n<span class=\"token keyword\">public<\/span><span class=\"token operator\">:<\/span><br \/>\n<span class=\"token function\">ServerInternalNetCallback<\/span><span class=\"token punctuation\">(<\/span>GlobalServerModule <span class=\"token operator\">*<\/span>server<span class=\"token punctuation\">)<\/span><span class=\"token operator\">:<\/span><span class=\"token function\">m_server<\/span><span class=\"token punctuation\">(<\/span>server<span class=\"token punctuation\">)<\/span><br \/>\n<span class=\"token punctuation\">{<\/span><br \/>\nm_globalserver <span class=\"token operator\">&#061;<\/span> <span class=\"token operator\">&amp;<\/span><span class=\"token class-name\">GlobalServer<\/span><span class=\"token operator\">::<\/span><span class=\"token function\">Instance<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token keyword\">virtual<\/span> <span class=\"token operator\">~<\/span><span class=\"token function\">ServerInternalNetCallback<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token keyword\">void<\/span> <span class=\"token function\">SetAllowIpPrefix<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">const<\/span> std<span class=\"token operator\">::<\/span>string <span class=\"token operator\">&amp;<\/span>allow_ip_prefix<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span> m_allow_ip_prefix <span class=\"token operator\">&#061;<\/span> allow_ip_prefix<span class=\"token punctuation\">;<\/span> <span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token keyword\">virtual<\/span> <span class=\"token keyword\">void<\/span> <span class=\"token function\">OnAccept<\/span><span class=\"token punctuation\">(<\/span>Port listen_port<span class=\"token punctuation\">,<\/span> NetID netid<span class=\"token punctuation\">,<\/span> IP ip<span class=\"token punctuation\">,<\/span> Port port<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token keyword\">virtual<\/span> <span class=\"token keyword\">void<\/span> <span class=\"token function\">OnRecv<\/span><span class=\"token punctuation\">(<\/span>NetID netid<span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">const<\/span> <span class=\"token keyword\">char<\/span> <span class=\"token operator\">*<\/span>data<span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">int<\/span> length<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token keyword\">virtual<\/span> <span class=\"token keyword\">void<\/span> <span class=\"token function\">OnDisconnect<\/span><span class=\"token punctuation\">(<\/span>NetID netid<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token keyword\">virtual<\/span> <span class=\"token keyword\">void<\/span> <span class=\"token function\">OnConnect<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">bool<\/span> result<span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">int<\/span> handle<span class=\"token punctuation\">,<\/span> NetID netid<span class=\"token punctuation\">,<\/span> IP ip<span class=\"token punctuation\">,<\/span> Port port<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">;<\/span><\/p>\n<p>***OnAccept()**&#xff1a;&#096;m_gs_list[netid].netid &#061; netid;&#096; m_gs_list\u662fgameserver\u5217\u8868\u3002<br \/>\n    * **OnRecv()**&#xff1a;\u6839\u636e\u534f\u8bae\u7c7b\u578b\u533a\u5206\u662f\u6765\u81eagamserver\/loginserver\/dbserver\/chatserver\u7684\u6d88\u606f&#xff0c;\u5206\u522b\u8c03\u7528OnGsRecv\/OnLoginRecv\/OnDataAccessRecv\/OnChatRecv\u65b9\u6cd5\u63a5\u53d7\u6765\u81ea\u5176\u4ed6server\u6d88\u606f\u5904\u7406\u903b\u8f91\u3002\u5176\u4e2d&#096;&lt;u&gt;&#096;OnGsRecv&#096;&lt;\/u&gt;&#096;\u7684\u903b\u8f91\u662f\u6839\u636e\u534f\u8bae\u6267\u884c\u56de\u8c03\u65b9\u6cd5 &#096;(this-&gt;*m_gs_handler_list[msg_type_index].func)(netid, data, length);&#096;\u3002&#096;&lt;u&gt;&#096;OnLoginRecv&#096;&lt;\/u&gt;&#096;\u6839\u636e\u534f\u8bae\u4e0d\u540c\u6267\u884c &#096;OnKickUser\/OnWallowNotice\/OnLGCmd\/OnGetNewGold\/OnGetNewChargePlan\/OnKillRobot&#096;\u3002&#096;&lt;u&gt;&#096;OnDataAccessRecv&#096;&lt;\/u&gt;&#096;\u6839\u636e\u534f\u8bae\u6267\u884c &#096;InternalComm::Instance().NetSend\/OnChangeGSFromDB\/OnLogoutSaveSucc&#096;\u3002&#096;&lt;u&gt;&#096;OnChatRecv&#096;&lt;\/u&gt;&#096;\u6839\u636e\u534f\u8bae\u6267\u884c &#096;CrossConnect::Instance().GetCrossList()-&gt;TransmitGCProtocal\/CrossConnect::Instance().GetCrossList()-&gt;SendUserMsg\/CrossConnect::Instance().SendChatMsgToAllGlobal\/CrossConnect::Instance().SendChatMsgCross&#096;\u3002<br \/>\n    * **OnDisconnect()**&#xff1a;&#096;m_gs_list[netid].Reset();&#096; &#096;m_gs_count&#8211;;&#096;gameserver\u5217\u8868\u5220\u9664\u65ad\u5f00\u8fde\u63a5\u7684\u8fd9\u4e2agameserver\u3002<br \/>\n    * **OnConnect()**&#xff1a;\u8bbe\u7f6em_login_server_id\u3002\u6ce8\u518c\u5230loginserver\u3002\u53d1\u9001\u6240\u6709\u5728\u672cglobalserver\u7684\u89d2\u8272\u5217\u8868\u4fe1\u606f\u7ed9loginserve\u3002<\/p>\n<h4>\/config<\/h4>\n<ul>\n<li>**globalconfig&#xff1a;**\u6301\u6709otherconfig\u548crankvalue&#xff0c;\u6301\u6709\u914d\u7f6e\u5730\u5740&#xff0c;\u521d\u59cb\u5316\u914d\u7f6e\u3002<\/li>\n<li>**otherconfig&#xff1a;**\u4e00\u4e2a\u914d\u7f6e&#xff0c;\u8bfb\u53d6\u914d\u7f6e\u5185\u5bb9\u5e76\u653e\u5230\u53d8\u91cf\u91cc\u3002<\/li>\n<li>**rankvalue&#xff1a;**\u5b9a\u4e49\u4e00\u4e2a\u547d\u540d\u7a7a\u95f4rankglobalvalue&#xff0c;\u91cc\u9762\u6709\u4e00\u4e9b\u5173\u4e8erank\u7684\u53d8\u91cf\u548c\u65b9\u6cd5\u3002<\/li>\n<li>**rankvaluedef&#xff1a;**\u628a\u914d\u7f6e\u7684\u503c\u653e\u5230\u547d\u540d\u7a7a\u95f4rankglobalvalue\u7684\u53d8\u91cf\u91cc\u3002<\/li>\n<\/ul>\n<h4>\/configjson<\/h4>\n<ul>\n<li>**globaljsonconfigmgr&#xff1a;**\u63d0\u4f9b\u6240\u6709config\u7684\u540d\u5b57\u4ee5\u53cajson\u6587\u4ef6\u540d&#xff1b;\u63d0\u4f9bInitConfig\u65b9\u6cd5\u521d\u59cb\u5316\u6240\u6709\u914d\u7f6e&#xff1b;\u63d0\u4f9bReloadConfig\u52a0\u8f7d\u6307\u5b9aname\u7684\u914d\u7f6e&#xff1b;\u63d0\u4f9bReloadAllConfig\u91cd\u65b0\u52a0\u8f7d\u6240\u6709\u914d\u7f6e&#xff1b;\u63d0\u4f9bRegisterConfig\u6ce8\u518c\u914d\u7f6e\u5230\u4e00\u4e2amap\u91cc\u65b9\u4fbf\u7d22\u5f15\u3002<\/li>\n<li>**armycontendjson&#xff1a;**army\u76f8\u5173\u5185\u5bb9&#xff08;\u5f88\u591a\u662f\u8fd9\u4e2a\u6d3b\u52a8\u7684\u5956\u52b1\u76f8\u5173&#xff0c;\u5f00\u542f\u65f6\u95f4\u7b49&#xff09;&#xff0c;\u4ecejson\u914d\u7f6e\u4e2d\u8bfb\u53d6\u6570\u636e\u5e76\u5b58\u5230\u53d8\u91cf\u91cc&#xff0c;\u63d0\u4f9b\u63a5\u53e3\u7ed9\u5916\u90e8\u83b7\u53d6\u53d8\u91cf\u7684\u503c\u3002<\/li>\n<li>**auctioncommonconfigjson&#xff1a;**\u62cd\u5356\u76f8\u5173\u5185\u5bb9&#xff08;\u5f88\u591a\u662f\u8fd9\u4e2a\u6d3b\u52a8\u7684\u5956\u52b1\u76f8\u5173&#xff0c;\u5f00\u542f\u65f6\u95f4\u7b49&#xff09;&#xff0c;\u4ecejson\u914d\u7f6e\u4e2d\u8bfb\u53d6\u6570\u636e\u5e76\u5b58\u5230\u53d8\u91cf\u91cc&#xff0c;\u63d0\u4f9b\u63a5\u53e3\u7ed9\u5916\u90e8\u83b7\u53d6\u53d8\u91cf\u7684\u503c\u3002<\/li>\n<li>**elementtemplatejsonconfig&#xff1a;**\u5143\u7d20\u5854\u76f8\u5173\u5185\u5bb9&#xff08;\u5f88\u591a\u662f\u8fd9\u4e2a\u6d3b\u52a8\u7684\u5956\u52b1\u76f8\u5173&#xff0c;\u5f00\u542f\u65f6\u95f4\u7b49&#xff09;&#xff0c;\u4ecejson\u914d\u7f6e\u4e2d\u8bfb\u53d6\u6570\u636e\u5e76\u5b58\u5230\u53d8\u91cf\u91cc&#xff0c;\u63d0\u4f9b\u63a5\u53e3\u7ed9\u5916\u90e8\u83b7\u53d6\u53d8\u91cf\u7684\u503c\u3002<\/li>\n<li>**endlessrankjsonconfig&#xff1a;**\u65e0\u5c3d\u5854\u6392\u884c\u699c\u5956\u52b1\u76f8\u5173\u5185\u5bb9&#xff08;\u5f88\u591a\u662f\u8fd9\u4e2a\u6d3b\u52a8\u7684\u5956\u52b1\u76f8\u5173&#xff0c;\u5f00\u542f\u65f6\u95f4\u7b49&#xff09;&#xff0c;\u4ecejson\u914d\u7f6e\u4e2d\u8bfb\u53d6\u6570\u636e\u5e76\u5b58\u5230\u53d8\u91cf\u91cc&#xff0c;\u63d0\u4f9b\u63a5\u53e3\u7ed9\u5916\u90e8\u83b7\u53d6\u53d8\u91cf\u7684\u503c\u3002<\/li>\n<li>**friendofflinejson&#xff1a;**\u597d\u53cb\u79bb\u7ebf\u76f8\u5173\u5185\u5bb9&#xff08;\u5f88\u591a\u662f\u8fd9\u4e2a\u6d3b\u52a8\u7684\u5956\u52b1\u76f8\u5173&#xff0c;\u5f00\u542f\u65f6\u95f4\u7b49&#xff09;&#xff0c;\u4ecejson\u914d\u7f6e\u4e2d\u8bfb\u53d6\u6570\u636e\u5e76\u5b58\u5230\u53d8\u91cf\u91cc&#xff0c;\u63d0\u4f9b\u63a5\u53e3\u7ed9\u5916\u90e8\u83b7\u53d6\u53d8\u91cf\u7684\u503c\u3002<\/li>\n<li>**globalarmybossjson&#xff1a;**globalarmyboss\u76f8\u5173\u5185\u5bb9&#xff08;\u5f88\u591a\u662f\u8fd9\u4e2a\u6d3b\u52a8\u7684\u5956\u52b1\u76f8\u5173&#xff0c;\u5f00\u542f\u65f6\u95f4\u7b49&#xff09;&#xff0c;\u4ecejson\u914d\u7f6e\u4e2d\u8bfb\u53d6\u6570\u636e\u5e76\u5b58\u5230\u53d8\u91cf\u91cc&#xff0c;\u63d0\u4f9b\u63a5\u53e3\u7ed9\u5916\u90e8\u83b7\u53d6\u53d8\u91cf\u7684\u503c\u3002<\/li>\n<li>**globalarmyconfigjson&#xff1a;**globalarmyconfig\u76f8\u5173\u5185\u5bb9&#xff08;\u5f88\u591a\u662f\u8fd9\u4e2a\u6d3b\u52a8\u7684\u5956\u52b1\u76f8\u5173&#xff0c;\u5f00\u542f\u65f6\u95f4\u7b49&#xff09;&#xff0c;\u4ecejson\u914d\u7f6e\u4e2d\u8bfb\u53d6\u6570\u636e\u5e76\u5b58\u5230\u53d8\u91cf\u91cc&#xff0c;\u63d0\u4f9b\u63a5\u53e3\u7ed9\u5916\u90e8\u83b7\u53d6\u53d8\u91cf\u7684\u503c\u3002<\/li>\n<li>**globalarmyfbjson&#xff1a;**globalarmyfb\u76f8\u5173\u5185\u5bb9&#xff08;\u5f88\u591a\u662f\u8fd9\u4e2a\u6d3b\u52a8\u7684\u5956\u52b1\u76f8\u5173&#xff0c;\u5f00\u542f\u65f6\u95f4\u7b49&#xff09;&#xff0c;\u4ecejson\u914d\u7f6e\u4e2d\u8bfb\u53d6\u6570\u636e\u5e76\u5b58\u5230\u53d8\u91cf\u91cc&#xff0c;\u63d0\u4f9b\u63a5\u53e3\u7ed9\u5916\u90e8\u83b7\u53d6\u53d8\u91cf\u7684\u503c\u3002<\/li>\n<li>**globalarmyhuntingjson&#xff1a;**globalarmyhunting\u76f8\u5173\u5185\u5bb9&#xff08;\u5f88\u591a\u662f\u8fd9\u4e2a\u6d3b\u52a8\u7684\u5956\u52b1\u76f8\u5173&#xff0c;\u5f00\u542f\u65f6\u95f4\u7b49&#xff09;&#xff0c;\u4ecejson\u914d\u7f6e\u4e2d\u8bfb\u53d6\u6570\u636e\u5e76\u5b58\u5230\u53d8\u91cf\u91cc&#xff0c;\u63d0\u4f9b\u63a5\u53e3\u7ed9\u5916\u90e8\u83b7\u53d6\u53d8\u91cf\u7684\u503c\u3002<\/li>\n<li>**globalarmywarehousejsonconfig&#xff1a;**globalarmywarehouse\u76f8\u5173\u5185\u5bb9&#xff08;\u5f88\u591a\u662f\u8fd9\u4e2a\u6d3b\u52a8\u7684\u5956\u52b1\u76f8\u5173&#xff0c;\u5f00\u542f\u65f6\u95f4\u7b49&#xff09;&#xff0c;\u4ecejson\u914d\u7f6e\u4e2d\u8bfb\u53d6\u6570\u636e\u5e76\u5b58\u5230\u53d8\u91cf\u91cc&#xff0c;\u63d0\u4f9b\u63a5\u53e3\u7ed9\u5916\u90e8\u83b7\u53d6\u53d8\u91cf\u7684\u503c\u3002<\/li>\n<li>**globalchallengearenajson&#xff1a;**globalchallengearena\u76f8\u5173\u5185\u5bb9&#xff08;\u5f88\u591a\u662f\u8fd9\u4e2a\u6d3b\u52a8\u7684\u5956\u52b1\u76f8\u5173&#xff0c;\u5f00\u542f\u65f6\u95f4\u7b49&#xff09;&#xff0c;\u4ecejson\u914d\u7f6e\u4e2d\u8bfb\u53d6\u6570\u636e\u5e76\u5b58\u5230\u53d8\u91cf\u91cc&#xff0c;\u63d0\u4f9b\u63a5\u53e3\u7ed9\u5916\u90e8\u83b7\u53d6\u53d8\u91cf\u7684\u503c\u3002<\/li>\n<li>**globalchampionracejson&#xff1a;**globalchampionrace\u76f8\u5173\u5185\u5bb9&#xff08;\u5f88\u591a\u662f\u8fd9\u4e2a\u6d3b\u52a8\u7684\u5956\u52b1\u76f8\u5173&#xff0c;\u5f00\u542f\u65f6\u95f4\u7b49&#xff09;&#xff0c;\u4ecejson\u914d\u7f6e\u4e2d\u8bfb\u53d6\u6570\u636e\u5e76\u5b58\u5230\u53d8\u91cf\u91cc&#xff0c;\u63d0\u4f9b\u63a5\u53e3\u7ed9\u5916\u90e8\u83b7\u53d6\u53d8\u91cf\u7684\u503c\u3002<\/li>\n<li>**globaldeepbattlefieldconfig&#xff1a;**globaldeepbattlefield\u76f8\u5173\u5185\u5bb9&#xff08;\u5f88\u591a\u662f\u8fd9\u4e2a\u6d3b\u52a8\u7684\u5956\u52b1\u76f8\u5173&#xff0c;\u5f00\u542f\u65f6\u95f4\u7b49&#xff09;&#xff0c;\u4ecejson\u914d\u7f6e\u4e2d\u8bfb\u53d6\u6570\u636e\u5e76\u5b58\u5230\u53d8\u91cf\u91cc&#xff0c;\u63d0\u4f9b\u63a5\u53e3\u7ed9\u5916\u90e8\u83b7\u53d6\u53d8\u91cf\u7684\u503c\u3002<\/li>\n<li>**globalherotrainjsonconfig&#xff1a;**globalherotrainjson\u76f8\u5173\u5185\u5bb9&#xff08;\u5f88\u591a\u662f\u8fd9\u4e2a\u6d3b\u52a8\u7684\u5956\u52b1\u76f8\u5173&#xff0c;\u5f00\u542f\u65f6\u95f4\u7b49&#xff09;&#xff0c;\u4ecejson\u914d\u7f6e\u4e2d\u8bfb\u53d6\u6570\u636e\u5e76\u5b58\u5230\u53d8\u91cf\u91cc&#xff0c;\u63d0\u4f9b\u63a5\u53e3\u7ed9\u5916\u90e8\u83b7\u53d6\u53d8\u91cf\u7684\u503c\u3002<\/li>\n<li>**globalkaifuwardmanagerjson&#xff1a;**globalkaifuward\u76f8\u5173\u5185\u5bb9&#xff08;\u5f88\u591a\u662f\u8fd9\u4e2a\u6d3b\u52a8\u7684\u5956\u52b1\u76f8\u5173&#xff0c;\u5f00\u542f\u65f6\u95f4\u7b49&#xff09;&#xff0c;\u4ecejson\u914d\u7f6e\u4e2d\u8bfb\u53d6\u6570\u636e\u5e76\u5b58\u5230\u53d8\u91cf\u91cc&#xff0c;\u63d0\u4f9b\u63a5\u53e3\u7ed9\u5916\u90e8\u83b7\u53d6\u53d8\u91cf\u7684\u503c\u3002<\/li>\n<li>**globaltimeractivityconfigbase&#xff1a;**globaltimeractivity\u76f8\u5173\u5185\u5bb9&#xff08;\u83b7\u53d6\u6d3b\u52a8\u5f00\u542f\u65f6\u95f4&#xff09;&#xff0c;\u4ecejson\u914d\u7f6e\u4e2d\u8bfb\u53d6\u6570\u636e\u5e76\u5b58\u5230\u53d8\u91cf\u91cc&#xff0c;\u63d0\u4f9b\u63a5\u53e3\u7ed9\u5916\u90e8\u83b7\u53d6\u53d8\u91cf\u7684\u503c\u3002<\/li>\n<li>**globalwishmakerjson&#xff1a;**globalwishmaker\u76f8\u5173\u5185\u5bb9&#xff08;\u5f88\u591a\u662f\u8fd9\u4e2a\u6d3b\u52a8\u7684\u5956\u52b1\u76f8\u5173&#xff0c;\u5f00\u542f\u65f6\u95f4\u7b49&#xff09;&#xff0c;\u4ecejson\u914d\u7f6e\u4e2d\u8bfb\u53d6\u6570\u636e\u5e76\u5b58\u5230\u53d8\u91cf\u91cc&#xff0c;\u63d0\u4f9b\u63a5\u53e3\u7ed9\u5916\u90e8\u83b7\u53d6\u53d8\u91cf\u7684\u503c\u3002<\/li>\n<li>**leaderboardjsonconfig&#xff1a;**leaderboard\u76f8\u5173\u5185\u5bb9&#xff08;\u5f88\u591a\u662f\u8fd9\u4e2a\u6d3b\u52a8\u7684\u5956\u52b1\u76f8\u5173&#xff0c;\u5f00\u542f\u65f6\u95f4\u7b49&#xff09;&#xff0c;\u4ecejson\u914d\u7f6e\u4e2d\u8bfb\u53d6\u6570\u636e\u5e76\u5b58\u5230\u53d8\u91cf\u91cc&#xff0c;\u63d0\u4f9b\u63a5\u53e3\u7ed9\u5916\u90e8\u83b7\u53d6\u53d8\u91cf\u7684\u503c\u3002<\/li>\n<li>**rankjsonconfig&#xff1a;**\u6392\u884c\u699c\u76f8\u5173\u5185\u5bb9&#xff0c;\u4ecejson\u914d\u7f6e\u4e2d\u8bfb\u53d6\u6570\u636e\u5e76\u5b58\u5230\u53d8\u91cf\u91cc&#xff0c;\u63d0\u4f9b\u63a5\u53e3\u7ed9\u5916\u90e8\u83b7\u53d6\u53d8\u91cf\u7684\u503c\u3002<\/li>\n<li>**sealleveljson&#xff1a;**seallevel\u76f8\u5173\u5185\u5bb9&#xff08;\u5f88\u591a\u662f\u8fd9\u4e2a\u6d3b\u52a8\u7684\u5956\u52b1\u76f8\u5173&#xff09;&#xff0c;\u4ecejson\u914d\u7f6e\u4e2d\u8bfb\u53d6\u6570\u636e\u5e76\u5b58\u5230\u53d8\u91cf\u91cc&#xff0c;\u63d0\u4f9b\u63a5\u53e3\u7ed9\u5916\u90e8\u83b7\u53d6\u53d8\u91cf\u7684\u503c\u3002<\/li>\n<\/ul>\n<h4>\/crossconnect<\/h4>\n<ul>\n<li>**crossconnect&#xff1a;**\u5b9a\u4e49\u7c7bCrossConnect&#xff0c;\u6301\u6709CrossList&#xff0c;\u63d0\u4f9b\u63a5\u53e3\u53d1\u9001\u6d88\u606f\u7ed9\u5176\u4ed6cross&#xff1a;SendChatMsgCross\/SendChatMsgToAllGlobal\/SendCLGlobalMsg&#xff1b;\u5b9a\u4e49\u4e00\u4e2a\u5b9a\u65f6\u5668&#xff0c;\u5b9a\u65f6\u5411\u5404\u4e2aserver\u53d1\u9001\u5fc3\u8df3\u5305&#xff1b;\u5b9a\u4e49\u4e00\u4e2a\u5b9a\u65f6\u5668&#xff0c;\u5b9a\u65f6\u5411cross\u8bf7\u6c42crossinfo\u4fe1\u606f\u3002<\/li>\n<li>**crosslist&#xff1a;**\u5b9a\u4e49\u7c7bcrosslist&#xff0c;\u6301\u6709CrossItemList\u548cPServerItemList\u3002\u63d0\u4f9b\u65b9\u6cd5OnRecv\u63a5\u53d7\u6570\u636e&#xff0c;\u6839\u636e\u534f\u8bae\u5185\u5bb9 OnTransmitInnerProtocal\/OnTransmitUserProtocal\/OnSendUserMsg\/OnMutlSendUserMsg\/OnNotifyDisconnectCrossGSNetID\/OnDisconnectCrossGSNetID\/OnCrossAddGlobal\/OnCrossDelGlobal&#xff1b;\u63d0\u4f9b\u65b9\u6cd5\u589e\u5220CrossItem\u5230CrossItemList&#xff1b;\u63d0\u4f9b\u65b9\u6cd5\u589e\u5220PServerItem\u5230PServerItemList\u3002\u63d0\u4f9b\u65b9\u6cd5\u53d1\u9001\u7f51\u7edc\u6570\u636e\u5305\u5230\u5176\u4ed6cross\u7684globalserver\/gameserver\/user&#xff1b;<\/li>\n<\/ul>\n<h4>\/rmiclient<\/h4>\n<ul>\n<li>**rmiglobalclient&#xff1a;**\u5b9a\u4e49\u4e00\u4e9bRMI\u8bf7\u6c42\u548cRMI\u56de\u8c03\u3002\u5b9a\u4e49RMI\u7c7b RMIQueryMailBackObject&#xff1b;RMIDestroyArmyBackObject&#xff1b;RMICreateArmyBackObject&#xff1b;RMIInitArmyBackObject&#xff1b;RMISaveArmyBackObject\u3002<\/li>\n<li>**rmigroleclient&#xff1a;**\u5b9a\u4e49RMI\u7c7b RMIGRoleClient&#xff1b;RMIGGetRoleInfoBackObject&#xff1b;RMIGSetRoleOnlineBackObject\u3002<\/li>\n<\/ul>\n<h4>\/globalserver<\/h4>\n<p><img decoding=\"async\" src=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2025\/04\/20250418212208-6802c280881dd.png\" alt=\"\" \/><\/p>\n<h5>globallog<\/h5>\n<p>\u5b9a\u4e49\u4e00\u7cfb\u5217logAgent\u5bf9\u8c61&#xff0c;\u5728init\u7684\u65f6\u5019\u5206\u522b\u8c03\u7528\u5404\u4e2alogAgent\u5bf9\u8c61\u7684\u65b9\u6cd5 SetLogModule\u8bbe\u7f6elog\u6a21\u5757\u548c\u65b9\u6cd5 SetCatagory\u8bbe\u7f6e\u4fdd\u5b58\u8def\u5f84\u3002<\/p>\n<h5>globalserver<\/h5>\n<p>\u5b9a\u4e49\u5168\u5c40\u5bf9\u8c61GlobalServer&#xff1a;<\/p>\n<ul>\n<li>\u6301\u6709\u6536\u5230\u7f51\u7edc\u534f\u8bae\u56de\u8c03\u51fd\u6570\u5217\u8868m_msg_handler_list&#xff08;\u4e00\u4e2a\u6570\u7ec4&#xff09;\u3002\u5f53\u6536\u5230\u5bf9\u5e94\u901a\u4fe1\u534f\u8bae&#xff0c;\u5728\u8fd9\u4e2alist\u76f4\u63a5\u7d22\u5f15\u5230\u5bf9\u5e94\u7684\u56de\u8c03\u51fd\u6570&#xff0c;\u7136\u540e\u6267\u884c\u56de\u8c03\u51fd\u6570\u3002<\/li>\n<li>\u6301\u6709\u5bf9\u8c61\u7ba1\u7406\u5668 GlobalUserManager&#xff1b;OnlineReactor&#xff1b;GlobalValueManager&#xff1b;RankManager&#xff1b;TeamManager&#xff1b;ArmyManager&#xff1b;FriendOfflineMgr&#xff1b;TimerLogicManager&#xff1b;FirstThreeStarMgr&#xff1b;ChallengeArenaMgr&#xff1b;EndlessRoadMgr&#xff1b;KaifuRewardManager&#xff1b;DimenMgr&#xff1b;LeaderBoardMgr&#xff1b;ChampionRaceMgr&#xff1b;GloDailyActivity&#xff1b;WishMakerManager&#xff1b;BattleVideoMgr&#xff1b;GlobalHeroTrainMgr&#xff1b;DevelopRankManager &#xff1b;DeepBattleFieldMgr&#xff1b;GlobalShenYuLogicMgr\u3002<\/li>\n<li>\u65f6\u95f4\u56de\u8c03\u51fd\u6570&#xff1a;OnZeroHour&#xff1b;OnWeekEnd&#xff1b;OnMonthEnd\u3002\u91cc\u9762\u5206\u522b\u53c8\u8c03\u7528\u5177\u4f53\u6301\u6709\u5bf9\u8c61\u7ba1\u7406\u5668\u7684\u65f6\u95f4\u56de\u8c03\u51fd\u6570\u3002<\/li>\n<li>global\u6536\u5230\u7f51\u7edc\u6d88\u606f\u56de\u8c03\u51fd\u6570&#xff1a;OnGateWayAccept\/OnGateWayDisconnect&#xff1b;OnUserRecv\/OnUserDisconnect&#xff1b;OnGsAccept&#xff1b;OnInternalRecv&#xff1b;OnGsRecv&#xff1b;OnInternalDisconnect&#xff1b;\u3002<\/li>\n<li>global\u53d1\u9001\u7f51\u7edc\u6570\u636e\u51fd\u6570&#xff1a;SendToUserGameWorld&#xff1b;SendToUserGameWorldByUserId&#xff1b;SendToAllUserGameWorld&#xff1b;SendToGateWayAllUser&#xff1b;SendToDefaultSceneGameWorld&#xff1b;SendToAllGameWorldUser&#xff1b;SendToSceneGameWorld&#xff1b;SendToAllGameWorld&#xff1b;SendToOtherGlobal\u3002<\/li>\n<li>\u7528\u6237\u767b\u9646\u767b\u51fa\u56de\u8c03&#xff1a;UserLogin&#xff1b;UserLogout&#xff1b;UserLoginSuc\u3002<\/li>\n<li>\u6ce8\u610f&#xff1a;globalserver\u6709\u4e00\u4e2aglobaluser&#xff0c;gameserver\u6709\u4e00\u4e2auser\u3002\u5f53\u4e00\u4e2a\u7528\u6237\u767b\u9646\u6210\u529f&#xff0c;\u5728globalserver\u548cgameserver\u4e2d\u90fd\u6709\u4e00\u4e2a\u5bf9\u8c61\u8868\u793a\u8fd9\u4e2a\u7528\u6237\u3002<\/li>\n<\/ul>\n<h5>globalservermsghandlere<\/h5>\n<p>\u5168\u5c40\u5bf9\u8c61GlobalServer\u4e2dm_msg_handler_list\u7684\u56de\u8c03\u51fd\u6570\u7684\u5177\u4f53\u5b9e\u73b0\u3002<\/p>\n<h5>globalmempool<\/h5>\n<ul>\n<li>\u6ce8\u518c64\u4e2aGlobalUser\u5bf9\u8c61\u5b9e\u4f8b\u5230\u5bf9\u8c61\u6c60<\/li>\n<li>\u6ce8\u518c64\u4e2aArmy\u5bf9\u8c61\u5b9e\u4f8b\u5230\u5bf9\u8c61\u6c60<\/li>\n<li>\u6ce8\u518c64\u4e2aArmyMember\u5bf9\u8c61\u5b9e\u4f8b\u5230\u5bf9\u8c61\u6c60<\/li>\n<li>\u6ce8\u518c64\u4e2aApplyItem\u5bf9\u8c61\u5b9e\u4f8b\u5230\u5bf9\u8c61\u6c60<\/li>\n<li>\u6ce8\u518c64\u4e2aRMIGGetRoleInfoBackObjectImpl\u5bf9\u8c61\u5b9e\u4f8b\u5230\u5bf9\u8c61\u6c60<\/li>\n<li>\u6ce8\u518c64\u4e2aRMIGGetRoleInfoByNameBackObjectImpl\u5bf9\u8c61\u5b9e\u4f8b\u5230\u5bf9\u8c61\u6c60<\/li>\n<li>\u6ce8\u518c64\u4e2aRMIGGetRoleInfoUpdateFriendBackObjectImpl\u5bf9\u8c61\u5b9e\u4f8b\u5230\u5bf9\u8c61\u6c60<\/li>\n<li>\u6ce8\u518c64\u4e2aRMICreateArmyBackObjectImpl\u5bf9\u8c61\u5b9e\u4f8b\u5230\u5bf9\u8c61\u6c60<\/li>\n<li>\u6ce8\u518c64\u4e2aRMIDestroyArmyBackObjectImpl\u5bf9\u8c61\u5b9e\u4f8b\u5230\u5bf9\u8c61\u6c60<\/li>\n<li>\u6ce8\u518c64\u4e2aRMISaveArmyBackObjectImpl\u5bf9\u8c61\u5b9e\u4f8b\u5230\u5bf9\u8c61\u6c60<\/li>\n<li>\u6ce8\u518c64\u4e2aRMIGGetRoleBriefInfoBackObjectImpl\u5bf9\u8c61\u5b9e\u4f8b\u5230\u5bf9\u8c61\u6c60<\/li>\n<li>\u6ce8\u518c64\u4e2aRMIGCrossGetRoleBriefInfoBackObjectImpl\u5bf9\u8c61\u5b9e\u4f8b\u5230\u5bf9\u8c61\u6c60<\/li>\n<li>\u6ce8\u518c64\u4e2aRMIGSetRoleOnlineBackObjectImpl\u5bf9\u8c61\u5b9e\u4f8b\u5230\u5bf9\u8c61\u6c60<\/li>\n<li>\u6ce8\u518c64\u4e2aRMIGOfflineGetRoleInfoBackObjectImpl\u5bf9\u8c61\u5b9e\u4f8b\u5230\u5bf9\u8c61\u6c60<\/li>\n<li>\u6ce8\u518c64\u4e2aPersonalRankItem\u5bf9\u8c61\u5b9e\u4f8b\u5230\u5bf9\u8c61\u6c60<\/li>\n<li>\u6ce8\u518c64\u4e2aArmyRankItem\u5bf9\u8c61\u5b9e\u4f8b\u5230\u5bf9\u8c61\u6c60<\/li>\n<\/ul>\n<h5>rmibackobjdef<\/h5>\n<ul>\n<li>RMI\u7c7b\u5bf9\u8c61RMIGGetRoleInfoBackObjectImpl\u58f0\u660e<\/li>\n<li>RMI\u7c7b\u5bf9\u8c61RMIGGetRoleInfoByNameBackObjectImpl\u58f0\u660e<\/li>\n<li>RMI\u7c7b\u5bf9\u8c61RMIGGetRoleInfoUpdateFriendBackObjectImpl\u58f0\u660e<\/li>\n<li>RMI\u7c7b\u5bf9\u8c61RMIGGetRoleBriefInfoBackObjectImpl\u58f0\u660e<\/li>\n<li>RMI\u7c7b\u5bf9\u8c61RMIGCrossGetRoleBriefInfoBackObjectImpl\u58f0\u660e<\/li>\n<li>RMI\u7c7b\u5bf9\u8c61RMIGOfflineGetRoleInfoBackObjectImpl\u58f0\u660e<\/li>\n<li>RMI\u7c7b\u5bf9\u8c61RMIGSetRoleOnlineBackObjectImpl\u58f0\u660e<\/li>\n<li>RMI\u7c7b\u5bf9\u8c61RMIGetPublicNoticeBackObjectImpl\u58f0\u660e<\/li>\n<li>RMI\u7c7b\u5bf9\u8c61RMIQueryMailBackObjectImpl\u58f0\u660e<\/li>\n<li>RMI\u7c7b\u5bf9\u8c61RMICreateArmyBackObjectImpl\u58f0\u660e<\/li>\n<li>RMI\u7c7b\u5bf9\u8c61RMIInitArmyBackObjectImpl\u58f0\u660e<\/li>\n<li>RMI\u7c7b\u5bf9\u8c61RMISaveArmyBackObjectImpl\u58f0\u660e<\/li>\n<li>RMI\u7c7b\u5bf9\u8c61RMIDestroyArmyBackObjectImpl\u58f0\u660e<\/li>\n<li>RMI\u7c7b\u5bf9\u8c61RMIDestroyErrorArmyBackObjectImpl\u58f0\u660e<\/li>\n<\/ul>\n<h5>\/army<\/h5>\n<ul>\n<li>**army&#xff1a;**\u5b9a\u4e49Army\u7c7b&#xff0c;\u63d0\u4f9barmy\u76f8\u5173\u5c5e\u6027\u548c\u5bf9\u5c5e\u6027\u7684\u64cd\u4f5c\u7684\u65b9\u6cd5\u3002\u6301\u6709m_army_manager\u3002<\/li>\n<li>**armyapplyfor&#xff1a;**\u5b9a\u4e49\u7ed3\u6784\u4f53ApplyItem&#xff0c;\u4e3b\u8981\u5185\u5bb9\u662f\u5934\u50cf&#xff0c;vip\u7b49\u7ea7&#xff0c;\u7528\u6237\u540d\u7b49&#xff1b;\u5b9a\u4e49\u7c7bArmyApplyFor&#xff0c;\u6301\u6709ApplyItemList&#xff0c;\u4e3b\u8981\u65b9\u6cd5\u5bf9\u8fd9\u4e2aApplyItemList\u505a\u64cd\u4f5c&#xff0c;\u589e\u5220\u6539\u67e5&#xff0c;\u540c\u6b65\u4fe1\u606f\u5230\u5ba2\u6237\u7aef\u7b49\u3002<\/li>\n<li>**armyauthority&#xff1a;**\u5b9a\u4e49\u7c7bArmyAuthority&#xff0c;\u5185\u6709\u679a\u4e3eAUTHORITY&#xff0c;\u7528\u4e8e\u68c0\u67e5\u6743\u9650\u3002<\/li>\n<li>**armychallenge&#xff1a;**\u7a7a\u3002<\/li>\n<li>**armycontendmanager&#xff1a;**\u5b9a\u4e49\u7c7bArmyContendManager&#xff0c;\u6301\u6709Army\u5bf9\u8c61&#xff0c;\u6301\u6709ArmyFieldMap\u3001ChallengeRankList\u3001ChallengeResultList\u3001ResultRewardGetMap&#xff0c;\u4e3b\u8981\u662f\u6392\u540d\u4e0e\u5956\u52b1&#xff1b;\u63d0\u4f9b\u65b9\u6cd5\u67e5\u8be2\u8fd9\u4e9b\u4fe1\u606f&#xff0c;\u4ee5\u53ca\u53d1\u9001\u5956\u52b1\u90ae\u4ef6\u7b49\u65b9\u6cd5\u3002<\/li>\n<li>**armygoaldef&#xff1a;**\u5b9a\u4e49\u679a\u4e3eARMY_TARGET_INDEX\u3002<\/li>\n<li>**armyhuntingmanager&#xff1a;**\u5b9a\u4e49\u7c7bArmyHuntingManager&#xff0c;\u6301\u6709m_role_damage_map&#xff0c;m_diff_list&#xff1b;\u63d0\u4f9b\u65b9\u6cd5\u5f00\u542fhunting\u6d3b\u52a8&#xff0c;\u540c\u6b65\u6d3b\u52a8\u4e2d\u73a9\u5bb6\u4f24\u5bb3\u7b49\u4fe1\u606f\u7ed9\u5ba2\u6237\u7aef\u3002<\/li>\n<li>**armylogic&#xff1a;**\u5b9a\u4e49\u7c7bArmyLogic&#xff0c;\u6301\u6709Army&#xff0c;ArmyLogicItemList\u3002\u4e3b\u8981\u662f\u5bf9ArmyLogicItemList\u8fdb\u884cInit&#xff0c;Save&#xff0c;OnZero&#xff0c;update\u7684\u64cd\u4f5c\u3002<\/li>\n<li>**armylogicitem&#xff1a;**\u5b9a\u4e49\u7c7bArmyLogicItem&#xff0c;\u6301\u6709Army\u3002<\/li>\n<li>**armymanager&#xff1a;**\u5b9a\u4e49\u7c7bArmyManager&#xff0c;\u6301\u6709ArmyList&#xff0c;\u4e00\u7cfb\u5217\u65b9\u6cd5\u662f\u5bf9ArmyList\u7684\u589e\u5220\u6539\u67e5&#xff1b;\u6301\u6709FbDamageRecordRank&#xff0c;\u8bb0\u5f55\u4f24\u5bb3\u6392\u884c&#xff1b;\u6301\u6709ArmyFbInfoMap&#xff0c;\u8bb0\u5f55\u526f\u672c\u4fe1\u606f&#xff1b;\u4e00\u7cfb\u5217onxxx\u65b9\u6cd5\u662f\u6536\u5230\u7f51\u7edc\u8bf7\u6c42\u540e\u89e6\u53d1\u7684\u56de\u8c03\u65b9\u6cd5&#xff1b;\u4e00\u7cfb\u5217sendxxx\u65b9\u6cd5\u7528\u4e8e\u5411\u5ba2\u6237\u7aef\/\u5176\u4ed6server\u540c\u6b65\u4fe1\u606f\u3002<\/li>\n<li>**armymembermanager&#xff1a;**\u5b9a\u4e49\u7c7bArmyMember&#xff1b;\u5b9a\u4e49\u7c7bArmyMemberManager&#xff0c;\u6301\u6709ArmyMemberList&#xff0c;\u65b9\u6cd5\u4e3b\u8981\u5bf9list\u589e\u5220\u6539\u67e5\u3002<\/li>\n<li>**armyredpaper&#xff1a;**\u5b9a\u4e49\u7c7bArmyRedPaper&#xff0c;\u6301\u6709Army&#xff0c;\u4ee3\u8868\u8be5\u7ea2\u5305\u5c5e\u4e8e\u54ea\u4e2a\u516c\u4f1a&#xff1b;\u6301\u6709RedPaperInfoMap\u3001RedPaperRecordDeq&#xff0c;\u8868\u793a\u7ea2\u5305\u4fe1\u606f&#xff08;\u662f\u5426\u9886\u53d6\u4e4b\u7c7b&#xff09;\u3002<\/li>\n<li>**armyuserindex&#xff1a;**\u5b9a\u4e49\u7c7bArmyUserIndex&#xff0c;\u6301\u6709ArmyManager&#xff1b;\u6301\u6709ArmyUserIndexMap&#xff0c;\u4e00\u4e9b\u589e\u5220\u6539\u67e5\u7684\u65b9\u6cd5\u56f4\u7ed5ArmyUserIndexMap\u8fdb\u884c\u64cd\u4f5c&#xff0c;\u8fd9\u4e2amap\u7684value\u662fArmyUser&#xff08;\u5185\u5bb9\u662fArmy\u548cArmyMember&#xff09;&#xff0c;\u8fd9\u4e2amap\u4ee3\u8868\u767b\u9646army\u7684army\u6210\u5458\u3002<\/li>\n<li>**armywarehousemanager&#xff1a;**\u5b9a\u4e49\u7c7bArmyWarehouseItem&#xff0c;\u6709\u552e\u51fa\u65f6\u95f4&#xff0c;\u5b58\u50a8\u65f6\u95f4&#xff0c;\u662f\u5426\u53ef\u5408\u5e76&#xff0c;\u9501\u5b9a\u65f6\u95f4\u7b49\u5c5e\u6027\u548c\u5bf9\u5c5e\u6027\u8fdb\u884c\u64cd\u4f5c\u7684\u65b9\u6cd5&#xff1b;\u5b9a\u4e49\u7c7bArmyWarehouseLog&#xff0c;\u6709\u7528\u6237id&#xff0c;\u7269\u54c1id&#xff0c;\u7269\u54c1\u6570\u91cf\u548c\u64cd\u4f5c\u65f6\u95f4\u7b49\u5c5e\u6027&#xff1b;\u5b9a\u4e49\u7c7bArmyWarehouseManager&#xff0c;\u6301\u6709Army&#xff0c;\u6301\u6709ArmyWarehouseItemList&#xff0c;\u4e00\u7cfb\u5217\u65b9\u6cd5\u5bf9\u8fd9\u4e2alist\u589e\u5220\u6539\u67e5&#xff0c;\u6301\u6709ArmyWarehouseLogList&#xff0c;\u8bb0\u5f55\u64cd\u4f5c\u7269\u54c1\u7684\u65e5\u5fd7\u3002<\/li>\n<\/ul>\n<h5>\/globalothter<\/h5>\n<ul>\n<li>**globalotherdata&#xff1a;**\u5b9a\u4e49\u7c7bGlobalOtherData&#xff0c;\u7ee7\u627f\u81eaJsonData&#xff0c;\u5b9e\u73b0Serialize\/Unserialize&#xff0c;\u5bf9\u6570\u636e\u8fdb\u884c\u5e8f\u5217\u5316\u548c\u53cd\u5e8f\u5217\u5316\u3002<\/li>\n<li>**globalothermgr&#xff1a;**\u7a7a\u3002<\/li>\n<\/ul>\n<h5>\/globalvalue<\/h5>\n<ul>\n<li>**globalvaluedata&#xff1a;**\u5b9a\u4e49\u7c7bGlobalValueData&#xff0c;\u7ee7\u627f\u81eaJsonData&#xff0c;\u5b9e\u73b0Serialize\/Unserialize&#xff0c;\u5bf9\u6570\u636e\u8fdb\u884c\u5e8f\u5217\u5316\u548c\u53cd\u5e8f\u5217\u5316\u3002<\/li>\n<li>**globalvaluemgr&#xff1a;**\u5b9a\u4e49\u7c7bGlobalValueManager&#xff0c;\u63d0\u4f9b\u65b9\u6cd5\u8bbe\u7f6e\u4ecejson\u8bfb\u53d6\u5230\u7684\u53d8\u91cf\u7684\u6570\u636e\u3002<\/li>\n<\/ul>\n<h5>\/logic<\/h5>\n<h6>activitycontroller<\/h6>\n<p>\u5b9a\u4e49\u7c7bTimerActivity&#xff0c;\u7ee7\u627f\u81eaIActivity\u3002<\/p>\n<p>\u63d0\u4f9b\u865a\u51fd\u6570 StartActivity&#xff1b;OnWaitKaifuDayEnd&#xff1b;OnZero&#xff1b;SetActivityOpenStatus&#xff1b;SetActivityHeraldStatus&#xff1b;SetActivityCloseStatus&#xff1b;OnUserLogin&#xff1b;OnUserLogout&#xff1b;OnUserLoginGameWorld&#xff1b;ReloadActivityConfig&#xff1b;OnActivityEnterReq&#xff1b;OnConfigReload\u3002<\/p>\n<p>\u63d0\u4f9b\u65b9\u6cd5 CreateACTimer&#xff1b;GetActivityType&#xff1b;IsActivityOpen\/IsActivityOpening\/GetActivityOpenNextInterval&#xff1b;\u3002<\/p>\n<h6>iactivity<\/h6>\n<p>\u5b9a\u4e49\u7c7bIActivity\u3002<\/p>\n<p>\u63d0\u4f9b\u865a\u51fd\u6570 OnUserLogin&#xff1b;OnUserLogout&#xff1b;OnUserLoginGameWorld&#xff1b;OnZero&#xff1b;OnUpdate&#xff1b;ReloadActivityConfig\u3002<\/p>\n<h6>ilogicmanager<\/h6>\n<p>\u5b9a\u4e49\u7c7bILogicManager\u3002<\/p>\n<p>\u63d0\u4f9b\u865a\u51fd\u6570 OnUserLogin&#xff1b;OnUserLogout&#xff1b;OnUserLoginGameWorld&#xff1b;OnZero&#xff1b;OnUpdate\u3002<\/p>\n<h6>timerlogicmanager<\/h6>\n<p>\u5b9a\u4e49\u7c7bTimerLogicManager&#xff0c;\u7ee7\u627f\u81eaILogicManager\u3002<\/p>\n<p>\u63d0\u4f9b\u865a\u51fd\u6570 OnUserLogin&#xff1b;OnUserLogout&#xff1b;OnUserLoginGameWorld&#xff1b;OnZero&#xff1b;OnUpdate\u3002<\/p>\n<p>\u63d0\u4f9b\u65b9\u6cd5 RegisterActivity\u3002\u4e3b\u8981\u64cd\u4f5c\u7684\u662fm_activity_map&#xff08;key\u662f\u6d3b\u52a8\u540d&#xff0c;value\u662fTimerActivity&#xff09;\u3002<\/p>\n<h6>\/armboss<\/h6>\n<ul>\n<li>**armybossmgr&#xff1a;**\u5b9a\u4e49\u7c7bArmyBossMgr&#xff0c;\u7ee7\u627f\u81eaTimerActivity\u3002\u6301\u6709FightArmyInfoMap\u8bb0\u5f55army\u7684score&#xff1b;\u6301\u6709FightRoleInfoMap&#xff0c;\u8bb0\u5f55army\u7684\u6bcf\u4e2a\u6218\u6597\u5bf9\u8c61\u7684score\u7b49\u4fe1\u606f\u3002\u63d0\u4f9b\u65b9\u6cd5\u83b7\u53d6\/\u66f4\u65b0army\u7684score\u6392\u884c\u699c\u3002<\/li>\n<\/ul>\n<h6>\/armycontend<\/h6>\n<p>\u7a7a\u3002<\/p>\n<h6>\/battlevideo<\/h6>\n<ul>\n<li>**battlevideomgr&#xff1a;**\u5b9a\u4e49\u7c7bBattleVideoMgr&#xff0c;\u6301\u6709VideoList\u3001BattleVideoMap&#xff0c;\u63d0\u4f9b\u65b9\u6cd5\u589e\u5220\u6539\u67e5\u6dfb\u52a0VideoInfo\u5230BattleVideoMap\u4e2d\u3002<\/li>\n<\/ul>\n<h6>\/challengearena<\/h6>\n<ul>\n<li>**challengearenamgr&#xff1a;**\u5b9a\u4e49\u7c7bChallengeArenaMgr&#xff0c;\u6301\u6709ChallengeRecordVec&#xff0c;\u4e3b\u8981\u65b9\u6cd5\u662f\u5f80vec\u589e\u5220\u6539\u67e5&#xff1b;\u8fd8\u6709\u4e00\u7cfb\u5217score\u7b49\u7684list&#xff0c;\u8bb0\u5f55\u6392\u884c\u699c\u4fe1\u606f\u3002<\/li>\n<li>**championracemgr&#xff1a;**\u5b9a\u4e49\u7c7bChampionRaceMgr&#xff0c;\u6301\u6709ArenaBetInfoList&#xff0c;ReportKey\u7b49&#xff0c;\u63d0\u4f9b\u65b9\u6cd5match\u5339\u914d\/\u66f4\u65b0\/\u540c\u6b65match\u7ed3\u679c\u7b49\u3002<\/li>\n<\/ul>\n<h6>\/deepbattlefield<\/h6>\n<ul>\n<li>**deepbattlefieldmgr&#xff1a;**\u5b9a\u4e49\u7c7bDeepBattleFieldMgr&#xff0c;\u6301\u6709DamageRecordMap&#xff0c;DamageRecordDeque&#xff0c;\u63d0\u4f9b\u65b9\u6cd5\u5bf9\u8fd9\u4e24\u4e2a\u589e\u5220\u6539\u67e5&#xff0c;\u4ee5\u53ca\u540c\u6b65\u4fe1\u606f\u5230\u5ba2\u6237\u7aef\u3002<\/li>\n<\/ul>\n<h6>\/dimen<\/h6>\n<ul>\n<li>**dimenmgr&#xff1a;**\u5b9a\u4e49\u7c7bDimenMgr&#xff0c;\u63d0\u4f9b\u65b9\u6cd5GetUserAverageStar\u83b7\u53d6\u5e73\u5747\u661f\u7ea7&#xff0c;\u63d0\u4f9b\u65b9\u6cd5OnOtherUserInfoReq&#xff0c;\u8bf7\u6c42\u4fe1\u606f\u65f6&#xff0c;\u540c\u6b65\u6240\u6709\u5339\u914d\u6218\u6597list\u6570\u636e\u7ed9gameserver\u3002<\/li>\n<\/ul>\n<h6>\/endlessroad<\/h6>\n<ul>\n<li>**endlessroadmgr&#xff1a;**\u5b9a\u4e49\u7c7bEndlessRoadMgr&#xff0c;\u6301\u6709HireHeroMap&#xff0c;HireRewardRecord&#xff0c;\u63d0\u4f9b\u65b9\u6cd5\u5bf9\u8fd9\u4e24\u4e2amap\u8fdb\u884c\u589e\u5220\u6539\u67e5&#xff0c;\u5c31\u662f\u4e0a\/\u4e0b\u9635\u82f1\u96c4\u3002<\/li>\n<\/ul>\n<h6>\/firstthreestar<\/h6>\n<ul>\n<li>**firstthreestarmgr&#xff1a;**\u5b9a\u4e49\u7c7bFirstThreeStarMgr&#xff0c;\u63d0\u4f9b\u65b9\u6cd5\u8bfb\u53d6\/\u4fdd\u5b58UserDataRecordList\u6570\u636e\u5230xml\u3002<\/li>\n<\/ul>\n<h6>\/friendoffline<\/h6>\n<ul>\n<li>**friendofflinemgr&#xff1a;**\u5b9a\u4e49\u7c7bFriendOfflineMgr&#xff0c;\u6301\u6709AddOfflineRecordMap&#xff0c;AddFriendAckRecordMap&#xff0c;OfflineSendSpritMap&#xff0c;DelFriendRecordMap\u63d0\u4f9b\u65b9\u6cd5\u5bf9\u5176\u589e\u5220\u6539\u67e5\u3002<\/li>\n<\/ul>\n<h6>\/globaldailyactivity<\/h6>\n<ul>\n<li>**glo_dailyactivity&#xff1a;**\u5b9a\u4e49\u7c7bGloDailyActivity&#xff0c;\u6301\u6709DailyActivityItemList&#xff0c;\u91cc\u9762\u5b58\u7740\u6240\u6709global\u6d3b\u52a8&#xff0c;\u63d0\u4f9b\u65b9\u6cd5\u66f4\u65b0\/\u68c0\u67e5\u6d3b\u52a8\u72b6\u6001&#xff0c;\u63d0\u4f9b\u65b9\u6cd5\u901a\u77e5\u5355\u4e2a\u6d3b\u52a8\u72b6\u6001\u6539\u53d8\u3002<\/li>\n<\/ul>\n<h6>\/globalherotrain<\/h6>\n<ul>\n<li>**globalherotrainmgr&#xff1a;**\u5b9a\u4e49\u7c7bGlobalHeroTrainMgr&#xff0c;\u6301\u6709UserIDSet&#xff0c;\u91cc\u9762\u662f\u53c2\u4e0e\u6d3b\u52a8\u7684\u7528\u6237&#xff0c;\u5f53\u6d3b\u52a8\u7ed3\u675f&#xff0c;\u901a\u8fc7\u8fd9\u4e2aset\u83b7\u53d6\u7528\u6237\u5e76\u53d1\u9001\u5956\u52b1\u90ae\u4ef6\u3002<\/li>\n<\/ul>\n<h6>\/globalshenyulogic<\/h6>\n<ul>\n<li>**globalshenyulogicmgr&#xff1a;**\u5b9a\u4e49\u7c7bGlobalShenYuLogicMgr&#xff0c;\u6301\u6709ShenYuLogicSquadsInfoMap\u5b58\u7684\u662f\u6392\u884c\u4fe1\u606f&#xff0c;\u63d0\u4f9b\u65b9\u6cd5\u8bf7\u6c42\/\u53d1\u9001\u4fe1\u606f\u540c\u6b65\u3002\u63d0\u4f9b\u65b9\u6cd5\u5c06\u6570\u636e\u8bfb\u53d6\/\u5b58\u50a8\u5230xml\u4e2d\u3002<\/li>\n<\/ul>\n<h6>\/leaderboard<\/h6>\n<ul>\n<li>**leaderboardmgr&#xff1a;**\u5b9a\u4e49\u7c7bLeaderBoardMgr&#xff0c;\u6301\u6709FightInfoList&#xff0c;UserFailedRecordMap&#xff0c;\u63d0\u4f9b\u65b9\u6cd5\u8fdb\u5165\u6218\u6597&#xff08;\u5c06\u6570\u636e\u5b58\u5165FightInfoList&#xff09;&#xff0c;\u540c\u6b65\u6218\u6597\u4fe1\u606f\u7b49\u3002<\/li>\n<\/ul>\n<h5>\/onlinenotice<\/h5>\n<ul>\n<li>**onlinereactor&#xff1a;**\u5b9a\u4e49\u7c7bOnlineReactor&#xff0c;\u6301\u6709ReactorUserList&#xff0c;\u63d0\u4f9b\u65b9\u6cd5 Register\/Unregister\/ReactionOnline\/ReactionOffLine\/GetReactiveUserID\/UnregisterAll\u64cd\u4f5c\u8fd9\u4e2alist\u3002<\/li>\n<\/ul>\n<h5>\/other<\/h5>\n<ul>\n<li>**developrankmanager&#xff1a;**\u5b9a\u4e49\u7c7bDevelopRankManager&#xff0c;\u6301\u6709UserRecordlist&#xff0c;\u63d0\u4f9b\u65b9\u6cd5\u589e\u5220\u6539\u67e5\u3002\u63d0\u4f9b\u65b9\u6cd5\u8bfb\u53d6\/\u5b58\u50a8\u6570\u636e\u5230xml\u3002<\/li>\n<li>**kaifurewardmanager&#xff1a;**\u5b9a\u4e49\u7c7bKaifuRewardManager&#xff0c;\u6301\u6709kaifulevelrewardnumlist&#xff0c;\u63d0\u4f9b\u65b9\u6cd5\u83b7\u53d6\u5956\u52b1\u5217\u8868&#xff0c;\u540c\u6b65\u4fe1\u606f\u7b49\u3002<\/li>\n<li>**teammanager&#xff1a;**\u5b9a\u4e49\u7c7bTeamManager&#xff0c;\u6301\u6709TeamList&#xff0c;\u63d0\u4f9b\u65b9\u6cd5 CreateTeam&#xff1b;RemoveTeamMember&#xff1b;ChangeTeamLeader&#xff1b;ChangeVip&#xff1b;ChangeLevel&#xff1b;IsTeamFull&#xff1b;IsTeamLeader&#xff1b;SendTeamInfo&#xff1b;SendTeamListToUser\u7b49\u3002<\/li>\n<li>**wishmakermanager&#xff1a;**\u5b9a\u4e49\u7c7bWishMakerManager&#xff0c;\u6301\u6709UserIDList&#xff0c;\u91cc\u9762\u662f\u53c2\u4e0e\u6d3b\u52a8\u7684\u7528\u6237&#xff0c;\u63d0\u4f9b\u65b9\u6cd5 OnRecordUserId&#xff1b;IsWishMakerOpen&#xff1b;UpdateActivityType&#xff1b;ResetActivityData&#xff1b;InitActivityType&#xff1b;SendActivityEndRankReward\u7b49\u3002<\/li>\n<\/ul>\n<h5>\/protocal<\/h5>\n<ul>\n<li>**msgarmy&#xff1a;**\u63d0\u4f9barmy\u76f8\u5173\u7684SCxxx\u548cCSxxx\u901a\u4fe1\u6570\u636e\u7ed3\u6784\u3002<\/li>\n<li>**msgcpp&#xff1a;**\u6d88\u606f\u7ed3\u6784\u4f53\u7684MessageHeader\u7684\u5b9a\u4e49&#xff08;\u5148\u5b9a\u4e49enum\u7684\u4e00\u4e2a\u503c&#xff0c;\u7136\u540e\u4ee5\u8fd9\u4e2a\u503c\u4f5c\u4e3aMessageHeader\u7684\u503c&#xff09;\u3002<\/li>\n<li>**msgglonewfestival&#xff1a;**\u63d0\u4f9bglonewfestival\u76f8\u5173\u7684SCxxx\u548cCSxxx\u901a\u4fe1\u6570\u636e\u7ed3\u6784\u3002<\/li>\n<li>**msgother&#xff1a;**\u63d0\u4f9bSCxxx\u548cCSxxx\u901a\u4fe1\u6570\u636e\u7ed3\u6784\u3002<\/li>\n<li>**msgserver&#xff1a;**\u63d0\u4f9bserver\u76f8\u5173\u7684SCxxx\u548cCSxxx\u901a\u4fe1\u6570\u636e\u7ed3\u6784\u3002<\/li>\n<li>**msgteam&#xff1a;**\u63d0\u4f9bteam\u76f8\u5173\u7684SCxxx\u548cCSxxx\u901a\u4fe1\u6570\u636e\u7ed3\u6784\u3002<\/li>\n<li>**msgtimerlogic&#xff1a;**\u63d0\u4f9btimerlogic\u76f8\u5173\u7684SCxxx\u548cCSxxx\u901a\u4fe1\u6570\u636e\u7ed3\u6784\u3002<\/li>\n<\/ul>\n<h5>\/rank<\/h5>\n<ul>\n<li>**armyrank&#xff1a;**\u5b9a\u4e49\u7c7bArmyRankItem&#xff0c;\u91cd\u5b9a\u4e49 operator&lt;\u4f7f\u5f97\u53ef\u4ee5\u5728map\u5bb9\u5668\u4e2d\u81ea\u52a8\u6392\u5e8f&#xff1b;\u5b9a\u4e49\u7c7bArmyRank&#xff0c;\u6301\u6709ArmyRankItemMap\u3002<\/li>\n<li>**personalrank&#xff1a;**\u5b9a\u4e49\u7c7bPersonalRankItem&#xff0c;\u91cd\u5b9a\u4e49 operator&lt;\u4f7f\u5f97\u53ef\u4ee5\u5728map\u5bb9\u5668\u4e2d\u81ea\u52a8\u6392\u5e8f&#xff1b;\u5b9a\u4e49\u7c7bPersonalRank&#xff0c;\u6301\u6709PersonalRankItemMap\u3002<\/li>\n<li>**rankitem&#xff1a;**\u5b9a\u4e49\u7c7bRankItem\u3002<\/li>\n<li>**rankmanager&#xff1a;**\u5b9a\u4e49\u7c7bRankManager&#xff0c;\u6301\u6709PersonalRank\u3001ArmyRank&#xff1b;\u63d0\u4f9b\u65b9\u6cd5\u5237\u65b0\/\u83b7\u53d6\u6392\u884c\u699c\u3002<\/li>\n<\/ul>\n<h5>\/user<\/h5>\n<ul>\n<li>**globaluser&#xff1a;**\u5b9a\u4e49\u7c7bGlobalUser&#xff0c;\u4e00\u7cfb\u5217get\/set\u65b9\u6cd5\u9488\u5bf9\u7528\u6237\u5c5e\u6027\u503c\u64cd\u4f5c\u3002<\/li>\n<li>**globalusermanager&#xff1a;**\u5b9a\u4e49\u7c7bGlobalUserManager&#xff0c;\u6301\u6709GlobalUserList&#xff0c;\u9488\u5bf9list\u7684\u589e\u5220\u6539\u67e5&#xff0c;\u63d0\u4f9b\u65b9\u6cd5\u8bbf\u95ee\u67d0\u4e2aGlobalUser&#xff0c;\u6839\u636eGlobalUser\u53d1\u9001\u90ae\u4ef6&#xff0c;\u540c\u6b65\u4fe1\u606f\u7ed9\u5ba2\u6237\u7aef\u7b49\u3002<\/li>\n<\/ul>\n<h3>gameserver<\/h3>\n<h4>exceptdump<\/h4>\n<p>window\u5e73\u53f0\u4e0b\u5f00\u542f\/\u5173\u95eddump\u6355\u6349\u3002<\/p>\n<h4>serverconfig.xml<\/h4>\n<p><img decoding=\"async\" src=\"2025-04-19451flpmw2gw.png\" alt=\"\" \/><\/p>\n<p>\u5b9a\u4e49\u6a21\u5757\u7684\u4e00\u4e9b\u53d8\u91cf&#xff0c;\u5982jobqueuelength\u6307\u5de5\u4f5c\u961f\u5217\u957f\u5ea6&#xff0c;maxpackagesize\u6307\u6700\u5927\u7f51\u7edc\u5305\u957f\u3002<\/p>\n<h4>serverlogic<\/h4>\n<p>&#8211; \u2460 \u6ce8\u518c\u56de\u8c03\u65b9\u6cd5&#xff0c;**&#096;&lt;font style&#061;&#034;color:#DF2A3F;&#034;&gt;&#096;\u6536\u5230\u5ba2\u6237\u7aef\u7f51\u7edc\u8fde\u63a5\u540e&#xff08;ServerNetworkCallback&#xff09;&#096;&lt;\/font&gt;&#096;**<\/p>\n<p>m_network_callback <span class=\"token operator\">&#061;<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token function\">ServerNetworkCallback<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">this<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\nm_network<span class=\"token operator\">-&gt;<\/span><span class=\"token function\">RegisterCallback<\/span><span class=\"token punctuation\">(<\/span>m_network_callback<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><\/p>\n<p><span class=\"token keyword\">class<\/span> <span class=\"token class-name\">ServerNetworkCallback<\/span> <span class=\"token operator\">:<\/span> <span class=\"token base-clause\"><span class=\"token keyword\">public<\/span> <span class=\"token class-name\">IEngineNetCallback<\/span><\/span><br \/>\n<span class=\"token punctuation\">{<\/span><br \/>\n<span class=\"token keyword\">public<\/span><span class=\"token operator\">:<\/span><br \/>\n<span class=\"token function\">ServerNetworkCallback<\/span><span class=\"token punctuation\">(<\/span>ServerLogic <span class=\"token operator\">*<\/span>server<span class=\"token punctuation\">)<\/span><span class=\"token operator\">:<\/span><span class=\"token function\">m_server<\/span><span class=\"token punctuation\">(<\/span>server<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token function\">m_world<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token keyword\">virtual<\/span> <span class=\"token operator\">~<\/span><span class=\"token function\">ServerNetworkCallback<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token keyword\">void<\/span> <span class=\"token function\">SetWorld<\/span><span class=\"token punctuation\">(<\/span>World <span class=\"token operator\">*<\/span>world<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span> m_world <span class=\"token operator\">&#061;<\/span> world<span class=\"token punctuation\">;<\/span> <span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token keyword\">void<\/span> <span class=\"token function\">SetAllowIpPrefix<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">const<\/span> std<span class=\"token operator\">::<\/span>string <span class=\"token operator\">&amp;<\/span>allow_ip_prefix<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span> m_allow_ip_prefix <span class=\"token operator\">&#061;<\/span> allow_ip_prefix<span class=\"token punctuation\">;<\/span> <span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token keyword\">virtual<\/span> <span class=\"token keyword\">void<\/span> <span class=\"token function\">OnAccept<\/span><span class=\"token punctuation\">(<\/span>Port listen_port<span class=\"token punctuation\">,<\/span> NetID netid<span class=\"token punctuation\">,<\/span> IP ip<span class=\"token punctuation\">,<\/span> Port port<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token keyword\">virtual<\/span> <span class=\"token keyword\">void<\/span> <span class=\"token function\">OnRecv<\/span><span class=\"token punctuation\">(<\/span>NetID netid<span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">const<\/span> <span class=\"token keyword\">char<\/span> <span class=\"token operator\">*<\/span>data<span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">int<\/span> length<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token keyword\">virtual<\/span> <span class=\"token keyword\">void<\/span> <span class=\"token function\">OnDisconnect<\/span><span class=\"token punctuation\">(<\/span>NetID netid<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token keyword\">virtual<\/span> <span class=\"token keyword\">void<\/span> <span class=\"token function\">OnConnect<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">bool<\/span> result<span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">int<\/span> handle<span class=\"token punctuation\">,<\/span> NetID netid<span class=\"token punctuation\">,<\/span> IP ip<span class=\"token punctuation\">,<\/span> Port port<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">;<\/span><\/p>\n<p>***OnAccept()**&#xff1a;&#096;m_world-&gt;OnAccept&#096;\u5373 &#096;m_gateway_set.insert(netid)&#096;\u5728\u4e00\u4e2aset\u91cc\u63d2\u5165\u4e0egameserver\u8fde\u63a5\u7684gateway\u3002<br \/>\n    * **OnRecv()**&#xff1a;&#096;m_world-&gt;OnRecv&#096;\u5373\u6839\u636e\u534f\u8bae\u51b3\u5b9a\u662f &#096;OnRecvMsg&#096;\u8fd8\u662f &#096;OnNetDisconnect&#096;&#xff0c;\u5982\u679c\u662f &#096;OnRecvMsg&#096;\u6700\u540e\u4f1a\u8c03\u7528\u5230 &#096;(this-&gt;*m_msg_handler_list[msg_type].func)(netid, scene, role, obj_id, (void*)msg)&#096;\u4e5f\u5c31\u662f\u6700\u540e\u4f1a\u6839\u636e\u534f\u8bae\u8c03\u7528\u9884\u5148\u6ce8\u518c\u5728\u8fd9\u4e2alist\u7684\u67d0\u4e2a\u56de\u8c03\u51fd\u6570\u3002<br \/>\n    * **OnDisconnect()**&#xff1a;&#096;m_world-&gt;OnDisconnect&#096;\u5373 &#096;m_scene_manager.OnGateWayDisconnect(netid); m_gateway_set.erase(netid);&#096;\u5c31\u662fgateway\u4e0egameserver\u65ad\u5f00\u8fde\u63a5\u3002<br \/>\n    * **OnConnect()**&#xff1a;\u7a7a\u3002<br \/>\n&#8211; \u2461 \u6ce8\u518c\u56de\u8c03\u65b9\u6cd5&#xff0c;**&#096;&lt;font style&#061;&#034;color:#DF2A3F;&#034;&gt;&#096;\u6536\u5230\u5185\u90e8\u7f51\u7edc\u8fde\u63a5\u540e&#xff08;ServerInternalNetCallback&#xff09;&#096;&lt;\/font&gt;&#096;**<\/p>\n<p>m_internal_network_callback <span class=\"token operator\">&#061;<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token function\">ServerInternalNetCallback<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">this<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\nm_internal_network<span class=\"token operator\">-&gt;<\/span><span class=\"token function\">RegisterCallback<\/span><span class=\"token punctuation\">(<\/span>m_internal_network_callback<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><\/p>\n<p><span class=\"token keyword\">class<\/span> <span class=\"token class-name\">ServerInternalNetCallback<\/span> <span class=\"token operator\">:<\/span> <span class=\"token base-clause\"><span class=\"token keyword\">public<\/span> <span class=\"token class-name\">IEngineNetCallback<\/span><\/span><br \/>\n<span class=\"token punctuation\">{<\/span><br \/>\n<span class=\"token keyword\">public<\/span><span class=\"token operator\">:<\/span><br \/>\n<span class=\"token function\">ServerInternalNetCallback<\/span><span class=\"token punctuation\">(<\/span>ServerLogic <span class=\"token operator\">*<\/span>server<span class=\"token punctuation\">)<\/span><span class=\"token operator\">:<\/span><span class=\"token function\">m_server<\/span><span class=\"token punctuation\">(<\/span>server<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token function\">m_world<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token keyword\">virtual<\/span> <span class=\"token operator\">~<\/span><span class=\"token function\">ServerInternalNetCallback<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token keyword\">void<\/span> <span class=\"token function\">SetWorld<\/span><span class=\"token punctuation\">(<\/span>World <span class=\"token operator\">*<\/span>world<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span> m_world <span class=\"token operator\">&#061;<\/span> world<span class=\"token punctuation\">;<\/span> <span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token keyword\">void<\/span> <span class=\"token function\">SetAllowIpPrefix<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">const<\/span> std<span class=\"token operator\">::<\/span>string <span class=\"token operator\">&amp;<\/span>allow_ip_prefix<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span> m_allow_ip_prefix <span class=\"token operator\">&#061;<\/span> allow_ip_prefix<span class=\"token punctuation\">;<\/span> <span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token keyword\">virtual<\/span> <span class=\"token keyword\">void<\/span> <span class=\"token function\">OnAccept<\/span><span class=\"token punctuation\">(<\/span>Port listen_port<span class=\"token punctuation\">,<\/span> NetID netid<span class=\"token punctuation\">,<\/span> IP ip<span class=\"token punctuation\">,<\/span> Port port<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token keyword\">virtual<\/span> <span class=\"token keyword\">void<\/span> <span class=\"token function\">OnRecv<\/span><span class=\"token punctuation\">(<\/span>NetID netid<span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">const<\/span> <span class=\"token keyword\">char<\/span> <span class=\"token operator\">*<\/span>data<span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">int<\/span> length<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token keyword\">virtual<\/span> <span class=\"token keyword\">void<\/span> <span class=\"token function\">OnDisconnect<\/span><span class=\"token punctuation\">(<\/span>NetID netid<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token keyword\">virtual<\/span> <span class=\"token keyword\">void<\/span> <span class=\"token function\">OnConnect<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">bool<\/span> result<span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">int<\/span> handle<span class=\"token punctuation\">,<\/span> NetID netid<span class=\"token punctuation\">,<\/span> IP ip<span class=\"token punctuation\">,<\/span> Port port<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">;<\/span><\/p>\n<p>***OnAccept()**&#xff1a;&#096;m_world-&gt;OnInternalAccept&#096;\u3002<br \/>\n    * **OnRecv()**&#xff1a;&#096;m_world-&gt;OnInternalRecv&#096;\u5373\u6839\u636e\u534f\u8bae\u51b3\u5b9a\u662f &#096;OnLGRegisterGS&#096;&#xff08;&#096;m_scene_manager.AddGS&#096;\u6dfb\u52a0gameserver\u5230\u4e00\u4e2a\u5bb9\u5668\u7ba1\u7406&#xff09;\u3001&#096;OnLGUnRegisterGS&#096;&#xff08;&#096;m_scene_manager.DeleteGS&#096;\u5220\u9664\u5bf9gameserver\u7684\u7ba1\u7406&#xff09;\u3001&#096;OnLGCmd&#096;&#xff08;\u6536\u5230\u6765\u81ealoginserver\u7684\u547d\u4ee4&#xff0c;\u6839\u636e\u547d\u4ee4\u6267\u884c\u5982\u91cd\u65b0\u52a0\u8f7d\u914d\u7f6e\u7b49\u64cd\u4f5c&#xff09;\u3002<br \/>\n    * **OnDisconnect()**&#xff1a;&#096;m_world-&gt;OnInternalDisconnect&#096;\u5373\u5982\u679c\u65ad\u5f00\u8fde\u63a5\u7684\u662floginserver&#xff0c;\u8d4b\u503c &#096;InternalComm::Instance().m_login_server_id &#061; -1&#096;\u7136\u540e\u6253\u5370log\u3002<br \/>\n    * **OnConnect()**&#xff1a;&#096;m_world-&gt;RegisterToLogin&#096;\u5373\u5f80loginserver\u6ce8\u518c\u81ea\u5df1\u7684\u5b58\u5728\u3002<\/p>\n<h4>\/crosslogagent<\/h4>\n<ul>\n<li>**crosslogagent&#xff1a;**\u5b9a\u4e49\u7c7bCrossLogAgent&#xff0c;\u6301\u6709LogAgent&#xff0c;\u5229\u7528LogAgent\u5c01\u88c5\u65b9\u6cd5 printf\/print&#xff1b;buff_printf\/buff_print\/commit_buff\/clear_buff\u6253\u5370log\u5230\u6307\u5b9a\u7684\u6587\u4ef6\u3002<\/li>\n<li>**crosslogagentmanager&#xff1a;**\u5b9a\u4e49\u7c7bCrossLogAgentManager&#xff0c;\u6301\u6709CrossLogAgentList&#xff0c;\u6839\u636e\u4e0d\u540c\u76ee\u5f55\u5c06CrossLogAgent\u6ce8\u518c\u8fdb\u4e00\u4e2alist\u4e2d&#xff0c;\u5c01\u88c5\u65b9\u6cd5 Print\u5c06\u4e0d\u540c\u76ee\u5f55\u7684\u65e5\u5fd7\u6253\u5370\u5230\u4e0d\u540c\u7684\u8f93\u51fa&#xff1b;\u5c01\u88c5\u65b9\u6cd5 SendToLocalServer\u5c06log\u5185\u5bb9\u53d1\u9001\u5230globalserver\u3002<\/li>\n<\/ul>\n<h4>\/rmiclient<\/h4>\n<ul>\n<li>**rmicenterclient&#xff1a;**\u5b9a\u4e49\u7c7bRMICenterClient&#xff0c;\u4e3b\u8981\u662f\u5f80center\u53d1\u9001RMI\u8bf7\u6c42\u7684\u65b9\u6cd5&#xff1b;\u5b9a\u4e49RMI\u56de\u8c03\u7c7bRMIMarketQueryTotalNumBackObject&#xff1b;RMIMarketNewTradeBackObject&#xff1b;RMIMarketQueryInfoBackObject&#xff1b;RMIMarketDeleteInfoBackObject&#xff1b;RMIMarketTradeReqBackObject&#xff1b;<\/li>\n<li>**rmiloginclient&#xff1a;**\u5b9a\u4e49\u7c7bRMILoginClient&#xff0c;\u4e3b\u8981\u662f\u5f80loginserver\u53d1\u9001RMI\u8bf7\u6c42\u7684\u65b9\u6cd5&#xff1b;\u5b9a\u4e49RMI\u56de\u8c03\u7c7bRMIGetGoldBackObject&#xff1b;RMIChangeGoldBackObject&#xff1b;RMIGetNewChargePlanBackObject&#xff1b;RMIGetChargePlanErrBackObject&#xff1b;RMIQueryNameExistBackObject&#xff1b;RMIResetNameBackObject&#xff1b;RMINameByRoleIDBackObject&#xff1b;<\/li>\n<li>**rmiroleclient&#xff1a;**\u5b9a\u4e49\u7c7bRMIRoleClient&#xff0c;\u4e3b\u8981\u662f\u5f80dataserver\u53d1\u9001RMI\u8bf7\u6c42\u7684\u65b9\u6cd5&#xff1b;\u5b9a\u4e49RMI\u56de\u8c03\u7c7bRMIRoleInitBackObject&#xff1b;RMIRoleSaveBackObject&#xff1b;RMIGetRoleBriefInfoBackObject&#xff1b;RMIQueryPresentBackObject&#xff1b;RMIGetPresentBackObject&#xff1b;RMISetPresentHasGetBackObject&#xff1b;RMIRemovePresentBackObject&#xff1b;RMIReadPresentBackObject&#xff1b;RMIQueryRoleInfoOfflineBackObject&#xff1b;RMINewPresentBackObject&#xff1b;RMIMarriageQueryUserInfo&#xff1b;RMIGetRoleAllInfoBackObject&#xff1b;<\/li>\n<\/ul>\n<h4>\/gameworld<\/h4>\n<h5>engineadapter<\/h5>\n<ul>\n<li>\u4f7f\u7528\u5c01\u88c5\u6a21\u5757IConfigModule&#xff1b;IGameModule&#xff1b;INetworkModule&#xff1b;IClockModule&#xff1b;ILogModule&#xff1b;IRMIModule&#xff1b;ITimerModule&#xff1b;IConfigModule\u63d0\u4f9b\u7684\u65b9\u6cd5\u3002<\/li>\n<li>\u4e0a\u8ff0\u5c01\u88c5\u6a21\u5757\u63d0\u4f9b\u7684\u65b9\u6cd5\u518d\u6b21\u5c01\u88c5\u5e76\u4e14\u63d0\u4f9b\u63a5\u53e3\u65b9\u6cd5\u7ed9\u5916\u90e8\u4f7f\u7528\n<ul>\n<li>NetSend\/NetSendAll\/NetMulSend\/NetDisconnect\/NetHasCheck&#xff1b;<\/li>\n<li>GetGameTime\/DayID\/Time\/LocalTime\/AscTime&#xff1b;<\/li>\n<li>NextMinuteInterval\/NextHourInterval\/NextDayInterval\/NextWeekInterval\/NextMouthInterval&#xff1b;<\/li>\n<li>GetDifDay\/IsSameDay&#xff1b;<\/li>\n<li>GetWorkPath&#xff1b;StopGame&#xff1b;ConfigSyncValue&#xff1b;<\/li>\n<li>IsThisWeek\/IsThisMonth&#xff1b;<\/li>\n<li>GetSeverStartDifDayNumUntilNow\/GetDifDayNumUntilNow&#xff1b;<\/li>\n<li>IsTargetPlatform\/IsCurDNYPlatform&#xff1b;<\/li>\n<li>RMIObjRegister\/RMICreateSession\/RMICloseSession&#xff1b;<\/li>\n<li>CreateTimer\/CreateTimerSecond\u3002<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h5>gamecommon<\/h5>\n<p>define\u4e86\u4e00\u7cfb\u5217\u5de5\u5177\u51fd\u6570&#xff0c;\u7528\u4e8ebit\u7ea7\u522b\u6570\u636e\u7684\u5224\u65ad\u548c\u64cd\u4f5c\u3002<\/p>\n<h5>gamedef<\/h5>\n<p>\u5b9a\u4e49\u4e86\u4e00\u4e9b\u65b9\u5411\u7684\u679a\u4e3e&#xff0c;\u5750\u6807\u7684\u53d8\u91cf&#xff0c;\u4e00\u4e9b\u6e38\u620f\u989c\u8272\u3001\u6280\u80fd\u5e38\u91cf\u7b49\u3002<\/p>\n<h5>gamelog<\/h5>\n<p>extern\u4e86\u4e00\u7cfb\u5217LogAgent\u5bf9\u8c61\u548cCrossLogAgent\u5bf9\u8c61\u3002<\/p>\n<h5>gamemempool<\/h5>\n<p>REGISTER_MEMPOOL\u6ce8\u518c\u4e86\u4e00\u7cfb\u521764\u4e2a\u5bf9\u8c61\u653e\u5230\u5bf9\u8c61\u6c60\u3002<\/p>\n<p>\u4e3b\u8981\u6709&#xff1a;<\/p>\n<ul>\n<li>effect\u5bf9\u8c61&#xff08;\u6280\u80fd\u6548\u679c&#xff09;\u3002<\/li>\n<li>NPC\u5bf9\u8c61<\/li>\n<li>RMI\u5bf9\u8c61<\/li>\n<li>Monster\u5bf9\u8c61<\/li>\n<li>Role\u3001RoleLogic\u3001GatherObj\u3001SentryObj\u3001GodCityGiftObj\u5bf9\u8c61\u7b49<\/li>\n<li>Scene\u3001MonsterGenerater\u3001GatherGenerater\u3001ChangeSceneDelayer\u3001SpecialLogicDefault\u5bf9\u8c61\u7b49<\/li>\n<\/ul>\n<h5>gamenotice<\/h5>\n<p>\u5b9a\u4e49\u7c7bGameNoticeManager<\/p>\n<p>\u5b9a\u4e49\u4e86\u4e00\u7cfb\u5217\u901a\u77e5\u51fd\u6570LotteryFiveStarNotice&#xff1b;LotteryRandomGiftNotice&#xff1b;LotteryChooseGiftNotice&#xff1b;LotteryGiftNoticeElite&#xff1b;KaifuLevelRewardNotice&#xff1b;LotterySoulNoticeElite&#xff1b;LotterySeerNoticeElite&#xff1b;LotteryNaionNoticeElite&#xff1b;LotteryFightPetNotice&#xff1b;HappyLotteryNotice&#xff1b;LotteryGiftNoticeRare&#xff1b;WishRewardNotice&#xff1b;HeroUpStarNotice&#xff1b;TriggerGiftBagNotice&#xff1b;ChallengeArenaRankNotice&#xff1b;ChallengeArenaWinNotice&#xff1b;CrossArenaNotice&#xff1b;<\/p>\n<h5>internalcomm<\/h5>\n<p>\u4e3b\u8981\u5de5\u4f5c\u662f\u5185\u90e8\u670d\u52a1\u95f4\u7684\u7f51\u7edc\u63a5\u53e3\u5c01\u88c5\u3002NetListen\/NetConnect\/NetConnectAsyn\/NetSend\/NetDisconnect&#xff0c;\u5b9e\u9645\u7528\u5230\u7684\u662fm_internal_network\u91cc\u9762\u7684\u65b9\u6cd5\u3002<\/p>\n<p>SetDBSession\/GetDBSession&#xff0c;\u5b9e\u9645\u7528\u5230\u7684\u662frmi::Session\u3002<\/p>\n<h5>rmibackobjdef<\/h5>\n<p>\u4e00\u7cfb\u5217RMI\u7c7b\u5bf9\u8c61\u7684\u58f0\u660e\u3002<\/p>\n<h5>world<\/h5>\n<h5>worldinit<\/h5>\n<h5>\/activity<\/h5>\n<h5>\/ai<\/h5>\n<h5>\/challengearena<\/h5>\n<h5>\/checkpoint<\/h5>\n<h5>\/config<\/h5>\n<h5>\/configjson<\/h5>\n<h5>\/effect<\/h5>\n<h5>\/friend<\/h5>\n<h5>\/globalconfig<\/h5>\n<h5>\/globalserver<\/h5>\n<h5>\/heropool<\/h5>\n<h5>\/item<\/h5>\n<h5>\/log<\/h5>\n<h5>\/lotterysystem<\/h5>\n<h5>\/monster<\/h5>\n<h5>\/npc<\/h5>\n<h5>\/obj<\/h5>\n<h5>\/other<\/h5>\n<h5>\/protocal<\/h5>\n<h5>\/roleother<\/h5>\n<h5>\/scene<\/h5>\n<h5>\/shop<\/h5>\n<h5>\/trade<\/h5>\n<h5>\/turnbasefight<\/h5>\n<h3>crossserver<\/h3>\n<h4>engineadapter<\/h4>\n<p>\u5355\u4f8b\u3002\u65f6\u95f4\u51fd\u6570&#xff0c;\u521b\u5efa\u5b9a\u65f6\u5668\u51fd\u6570\u3002<\/p>\n<p>\u4f7f\u7528 IConfigModule&#xff0c;IClockModule&#xff0c;ILogModule&#xff0c;ITimerModule\u3002<\/p>\n<h4>crossmodule<\/h4>\n<p>\u6301\u6709Cross\u5bf9\u8c61\u3002<\/p>\n<p>ListenForGlobal\u76d1\u542cglobalserver\u7684\u8fde\u63a5<\/p>\n<p>CrossNetworkCallback\u56de\u8c03<\/p>\n<h4>corssmanagermodule<\/h4>\n<p>ListenForCrossServer\u76d1\u542c\u5176\u4ed6corssserver<\/p>\n<p>ListenForGlobalServer\u76d1\u542c\u5176\u4ed6globalserver<\/p>\n<p>CrossManagerNetworkCallback\u56de\u8c03<\/p>\n<h4>crosslog<\/h4>\n<p>\u8de8\u670dlog<\/p>\n<h4>\/cross<\/h4>\n<p>\u6301\u6709GlobalList<\/p>\n<p>\u6536\u5230\u6765\u81eaglobalserver\u7684\u6d88\u606f&#xff0c;\u6839\u636e\u534f\u8bae\u5185\u5bb9\u8f6c\u53d1:<\/p>\n<p><span class=\"token comment\">\/\/\u5185\u90e8\u534f\u8bae\u8f6c\u53d1\u8bf7\u6c42(gglobalprotocal)<\/span><br \/>\nCrossInnerTransmitReq<br \/>\n<span class=\"token comment\">\/\/ clinet\u53d1\u5230gameworld[\u8de8\u670d]\u7684\u6d88\u606f&#xff0c;\u901a\u8fc7Client-&gt;gateway[\u672c\u670d]-&gt;global[\u672c\u670d]-&gt;cross-&gt;global[\u8de8\u670d]-&gt;gameworld[\u8de8\u670d]<\/span><br \/>\nCrossUserTransmitCTSReq<br \/>\n<span class=\"token comment\">\/\/ gameworld[\u8de8\u670d]\u53d1\u5230clinet\u7684\u6d88\u606f&#xff0c;\u901a\u8fc7gameworld[\u8de8\u670d]-&gt;global[\u8de8\u670d]-&gt;cross-&gt;global[\u672c\u670d]-&gt;gateway[\u672c\u670d]-&gt;Client<\/span><br \/>\nCrossUserTransmitSTCReq<br \/>\nCrossUserTransmitReqMultSTC<br \/>\n<span class=\"token comment\">\/\/ \u672c\u670d\u901a\u77e5gameworld[\u8de8\u670d]clinet\u8fde\u63a5\u65ad\u5f00&#xff0c;\u901a\u8fc7gateway[\u672c\u670d]-&gt;global[\u672c\u670d]-&gt;cross-&gt;global[\u8de8\u670d]-&gt;gameworld[\u8de8\u670d]<\/span><br \/>\nCrossUserDisconnectNotify<br \/>\n<span class=\"token comment\">\/\/ gameworld[\u8de8\u670d]\u65ad\u5f00clinet\u8fde\u63a5&#xff0c;\u901a\u8fc7gameworld[\u8de8\u670d]-&gt;global[\u8de8\u670d]-&gt;cross-&gt;global[\u672c\u670d]-&gt;gateway[\u672c\u670d]<\/span><br \/>\nCrossUserDisconnectReq<br \/>\n<span class=\"token comment\">\/\/\u4eceglobal[\u8de8\u670d]-&gt;cross-&gt;global[\u672c\u670d]-&gt;gateway[\u672c\u670d]-&gt;Client<\/span><br \/>\nCrossUserTransmitByUserIdSTCReq<\/p>\n<h4>\/crossmanager<\/h4>\n<p>\u6301\u6709GlobalList&#xff0c;CrossList\u3002<\/p>\n<p>\u63d0\u4f9b\u65b9\u6cd5&#xff1a;<\/p>\n<ul>\n<li>SendToGlobal&#xff1a;\u53d1\u9001\u4fe1\u606f\u7ed9\u6307\u5b9aglobalserver<\/li>\n<li>SendToAllGlobal&#xff1a;\u53d1\u9001\u4fe1\u606f\u7ed9\u6240\u6709globalserver<\/li>\n<li>SendToAllAreaUserByPsId&#xff1a;\u6839\u636earea_type\u53d1\u9001\u4fe1\u606f\u7ed9\u6307\u5b9a\u7684\u6240\u6709globalserver\u4e0b\u7684user<\/li>\n<\/ul>\n<p>HeartBeatTimer\u5b9a\u65f6\u5668\u4e0e\u6240\u6709crossserver\u548cglobalserver\u8fdb\u884c\u5fc3\u8df3\u786e\u8ba4\u3002<\/p>\n<h4>\/corsslogic<\/h4>\n<h5>crosslogic<\/h5>\n<p>\u6301\u6709CrossLogicManager&#xff0c;CrossSceneActivityMgr\u3002<\/p>\n<p>\u6301\u6709 HandlerItem m_msg_handler_list[MAX_MSG_TYPE]\u3002<\/p>\n<p>\u6301\u6709 HandlerGameItem m_game_msg_handler_list[MAX_MSG_TYPE]\u3002<\/p>\n<p>\u4e00\u7cfb\u5217sendxxx\u65b9\u6cd5&#xff0c;\u8c03\u7528crossmanager\u7684\u65b9\u6cd5\u53d1\u9001\u6d88\u606f\u5185\u5bb9\u7ed9\u6307\u5b9aglobalserver\/\u5176\u4ed6crossserver\u3002<\/p>\n<p>\u4e00\u7cfb\u5217systemxxx\u65b9\u6cd5&#xff0c;\u8c03\u7528crossmanager\u7684\u65b9\u6cd5\u53d1\u9001\u6d88\u606f\u5185\u5bb9\u7ed9\u6307\u5b9aglobalserver\/\u5176\u4ed6crossserver\u3002<\/p>\n<p>\u4e00\u7cfb\u5217onxxx\u65b9\u6cd5&#xff0c;\u6ce8\u518c\u5728m_msg_handler_list&#xff0c;m_game_msg_handler_list\u4f5c\u4e3a\u56de\u8c03\u51fd\u6570\u3002<\/p>\n<p>MoveRoleToScene&#xff1a;\u8de8\u670d\u89d2\u8272\u79fb\u52a8\u534f\u8bae&#xff0c;\u8de8\u670d\u65f6\u9700\u8981\u5c06\u6d88\u606f\u540c\u6b65\u7ed9\u6240\u6709\u5176\u4ed6globalserver\u7684gameserver\u3002<\/p>\n<h5>crossmempool<\/h5>\n<p>\u521b\u5efa\u5bf9\u8c61\u6c60&#xff1a;CrossPersonalRankItem&#xff0c;CrossWeddingRankItem&#xff0c;CrossTeamArenaRankItem&#xff0c;CrossTeam\u3002<\/p>\n<h5>\/activity<\/h5>\n<ul>\n<li>**crossdailyactivitymgr&#xff1a;**\u6301\u6709m_activity_id_list\u7ef4\u62a4\u4ece\u914d\u7f6e\u8bfb\u53d6\u7684\u6240\u6709\u6d3b\u52a8id&#xff0c;\u6301\u6709m_activity_end_type_list\u4fdd\u5b58\u5df2\u7ecf\u7ed3\u675f\u7684\u6d3b\u52a8\u3002<\/li>\n<\/ul>\n<h5>\/config<\/h5>\n<h5>\/configjson<\/h5>\n<h5>\/crossarmy<\/h5>\n<ul>\n<li>**crossarmy&#xff1a;**\u4e00\u7cfb\u5217\u53d8\u91cf&#xff0c;\u63cf\u8ff0army\u3002<\/li>\n<li>**corssarmymanager&#xff1a;**\u7ef4\u62a4CrossArmyList&#xff0c;CrossArmyInfoMap\u3002<\/li>\n<\/ul>\n<h5>\/crossdicegame<\/h5>\n<h5>\/crossrankmanager<\/h5>\n<ul>\n<li>**crossrankmanager&#xff1a;**\u7ef4\u62a4CrossPersonalRank[]&#xff0c;CrossWeddingRank[]&#xff0c;CrossTeamArenaRank[]\u3002<\/li>\n<li>**crosspersonalrank&#xff1a;**\u6392\u540d\u5b58\u5728\u4e00\u4e2a\u94fe\u8868\u91cc&#xff0c;\u4ee5\u53ca\u7ef4\u62a4\u4e00\u4e2amap\u7528\u4e8e\u5feb\u901f\u7d22\u5f15\u5177\u4f53\u7528\u6237\u3002\u574f\u5904\u662f\u83b7\u53d6\u6392\u540d\u7684\u7528\u6237\u7684\u65f6\u5019\u5c31\u9700\u8981\u904d\u5386\u94fe\u8868&#xff0c;\u597d\u5904\u662f\u63d2\u5165\u548c\u5220\u9664&#xff0c;\u6216\u8005\u4ea4\u6362\u6392\u540d&#xff0c;\u64cd\u4f5c\u94fe\u8868\u6bd4\u8f83\u65b9\u4fbf\u3002<\/li>\n<li>**crossteamarenarank&#xff1a;**\u540ccrosspersonalrank\u3002<\/li>\n<li>**crossweddingrank&#xff1a;**\u540ccrosspersonalrank\u3002<\/li>\n<\/ul>\n<h5>\/crossrighttouch<\/h5>\n<h5>\/crosshake<\/h5>\n<h5>\/crossteam<\/h5>\n<h5>\/crossteamfb<\/h5>\n<h5>\/crossuser<\/h5>\n<h5>\/protocal<\/h5>\n<h5>\/logic<\/h5>\n<h6>crosslogicmanager<\/h6>\n<h6>icrossactivity<\/h6>\n<h6>\/cross3v3<\/h6>\n<h6>\/cross3v3arena<\/h6>\n<h6>\/crossarena<\/h6>\n<h6>\/crossarena1v1<\/h6>\n<h6>\/crossarena2v4<\/h6>\n<h6>\/crossarmy<\/h6>\n<h6>\/crossboss<\/h6>\n<h6>\/crossdragoncity<\/h6>\n<h6>\/crossfightcity<\/h6>\n<h6>\/crossgrabboss<\/h6>\n<h6>\/crossmaintown<\/h6>\n<h6>\/crossmelee<\/h6>\n<h6>\/crossoiran<\/h6>\n<h6>\/crosspubg<\/h6>\n<h6>\/crosshenmobattle<\/h6>\n<h6>\/crossxiuluotower<\/h6>\n<h6>\/sceneactivity<\/h6>\n","protected":false},"excerpt":{"rendered":"<p>\u6587\u7ae0\u6d4f\u89c8\u9605\u8bfb1k\u6b21\uff0c\u70b9\u8d5e8\u6b21\uff0c\u6536\u85cf27\u6b21\u3002CrossData\u662f\u9759\u6001\u5bf9\u8c61\uff0c\u4e3b\u8981\u4f5c\u7528\u662f\u7528\u4e8e\u5b58\u50a8role_all_struct\u7684std::map CrossUserList\uff0c\u5373\u8de8\u670d\u7684\u89d2\u8272\u6570\u636e\u7684map\u3002NetListen\/NetConnect\/NetSend\/NetDisconnect\uff0c\u5b9e\u9645\u7528\u5230\u7684\u662fm_internal_network\u91cc\u9762\u7684\u65b9\u6cd5\u3002NetListen\/NetConnect\/NetSend\/NetDisconnect\uff0c\u5b9e\u9645\u7528\u5230\u7684\u662fm_internal_network\u91cc\u9762\u7684\u65b9\u6cd5\u3002_irmimodule createsession \u8fd4\u56de 0<\/p>\n","protected":false},"author":2,"featured_media":22033,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[43,248,78],"topic":[],"class_list":["post-22053","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-server","tag-43","tag-248","tag-78"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v20.3 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>\u3010\u6e38\u620f\u6846\u67b6\u3011\u591a\u8fdb\u7a0b\u670d\u52a1\u5668 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.wsisp.com\/helps\/22053.html\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u3010\u6e38\u620f\u6846\u67b6\u3011\u591a\u8fdb\u7a0b\u670d\u52a1\u5668 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3\" \/>\n<meta property=\"og:description\" content=\"\u6587\u7ae0\u6d4f\u89c8\u9605\u8bfb1k\u6b21\uff0c\u70b9\u8d5e8\u6b21\uff0c\u6536\u85cf27\u6b21\u3002CrossData\u662f\u9759\u6001\u5bf9\u8c61\uff0c\u4e3b\u8981\u4f5c\u7528\u662f\u7528\u4e8e\u5b58\u50a8role_all_struct\u7684std::map CrossUserList\uff0c\u5373\u8de8\u670d\u7684\u89d2\u8272\u6570\u636e\u7684map\u3002NetListen\/NetConnect\/NetSend\/NetDisconnect\uff0c\u5b9e\u9645\u7528\u5230\u7684\u662fm_internal_network\u91cc\u9762\u7684\u65b9\u6cd5\u3002NetListen\/NetConnect\/NetSend\/NetDisconnect\uff0c\u5b9e\u9645\u7528\u5230\u7684\u662fm_internal_network\u91cc\u9762\u7684\u65b9\u6cd5\u3002_irmimodule createsession \u8fd4\u56de 0\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.wsisp.com\/helps\/22053.html\" \/>\n<meta property=\"og:site_name\" content=\"\u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3\" \/>\n<meta property=\"article:published_time\" content=\"2025-04-18T21:22:09+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2025\/04\/20250418212205-6802c27d67230.png\" \/>\n<meta name=\"author\" content=\"admin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u4f5c\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4\" \/>\n\t<meta name=\"twitter:data2\" content=\"35 \u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/22053.html\",\"url\":\"https:\/\/www.wsisp.com\/helps\/22053.html\",\"name\":\"\u3010\u6e38\u620f\u6846\u67b6\u3011\u591a\u8fdb\u7a0b\u670d\u52a1\u5668 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3\",\"isPartOf\":{\"@id\":\"https:\/\/www.wsisp.com\/helps\/#website\"},\"datePublished\":\"2025-04-18T21:22:09+00:00\",\"dateModified\":\"2025-04-18T21:22:09+00:00\",\"author\":{\"@id\":\"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/358e386c577a3ab51c4493330a20ad41\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.wsisp.com\/helps\/22053.html#breadcrumb\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.wsisp.com\/helps\/22053.html\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/22053.html#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9875\",\"item\":\"https:\/\/www.wsisp.com\/helps\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\u3010\u6e38\u620f\u6846\u67b6\u3011\u591a\u8fdb\u7a0b\u670d\u52a1\u5668\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/#website\",\"url\":\"https:\/\/www.wsisp.com\/helps\/\",\"name\":\"\u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3\",\"description\":\"\u9999\u6e2f\u670d\u52a1\u5668_\u9999\u6e2f\u4e91\u670d\u52a1\u5668\u8d44\u8baf_\u670d\u52a1\u5668\u5e2e\u52a9\u6587\u6863_\u670d\u52a1\u5668\u6559\u7a0b\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.wsisp.com\/helps\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"zh-Hans\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/358e386c577a3ab51c4493330a20ad41\",\"name\":\"admin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/gravatar.wp-china-yes.net\/avatar\/?s=96&d=mystery\",\"contentUrl\":\"https:\/\/gravatar.wp-china-yes.net\/avatar\/?s=96&d=mystery\",\"caption\":\"admin\"},\"sameAs\":[\"http:\/\/wp.wsisp.com\"],\"url\":\"https:\/\/www.wsisp.com\/helps\/author\/admin\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"\u3010\u6e38\u620f\u6846\u67b6\u3011\u591a\u8fdb\u7a0b\u670d\u52a1\u5668 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.wsisp.com\/helps\/22053.html","og_locale":"zh_CN","og_type":"article","og_title":"\u3010\u6e38\u620f\u6846\u67b6\u3011\u591a\u8fdb\u7a0b\u670d\u52a1\u5668 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","og_description":"\u6587\u7ae0\u6d4f\u89c8\u9605\u8bfb1k\u6b21\uff0c\u70b9\u8d5e8\u6b21\uff0c\u6536\u85cf27\u6b21\u3002CrossData\u662f\u9759\u6001\u5bf9\u8c61\uff0c\u4e3b\u8981\u4f5c\u7528\u662f\u7528\u4e8e\u5b58\u50a8role_all_struct\u7684std::map CrossUserList\uff0c\u5373\u8de8\u670d\u7684\u89d2\u8272\u6570\u636e\u7684map\u3002NetListen\/NetConnect\/NetSend\/NetDisconnect\uff0c\u5b9e\u9645\u7528\u5230\u7684\u662fm_internal_network\u91cc\u9762\u7684\u65b9\u6cd5\u3002NetListen\/NetConnect\/NetSend\/NetDisconnect\uff0c\u5b9e\u9645\u7528\u5230\u7684\u662fm_internal_network\u91cc\u9762\u7684\u65b9\u6cd5\u3002_irmimodule createsession \u8fd4\u56de 0","og_url":"https:\/\/www.wsisp.com\/helps\/22053.html","og_site_name":"\u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","article_published_time":"2025-04-18T21:22:09+00:00","og_image":[{"url":"https:\/\/www.wsisp.com\/helps\/wp-content\/uploads\/2025\/04\/20250418212205-6802c27d67230.png"}],"author":"admin","twitter_card":"summary_large_image","twitter_misc":{"\u4f5c\u8005":"admin","\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4":"35 \u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.wsisp.com\/helps\/22053.html","url":"https:\/\/www.wsisp.com\/helps\/22053.html","name":"\u3010\u6e38\u620f\u6846\u67b6\u3011\u591a\u8fdb\u7a0b\u670d\u52a1\u5668 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","isPartOf":{"@id":"https:\/\/www.wsisp.com\/helps\/#website"},"datePublished":"2025-04-18T21:22:09+00:00","dateModified":"2025-04-18T21:22:09+00:00","author":{"@id":"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/358e386c577a3ab51c4493330a20ad41"},"breadcrumb":{"@id":"https:\/\/www.wsisp.com\/helps\/22053.html#breadcrumb"},"inLanguage":"zh-Hans","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.wsisp.com\/helps\/22053.html"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.wsisp.com\/helps\/22053.html#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9875","item":"https:\/\/www.wsisp.com\/helps"},{"@type":"ListItem","position":2,"name":"\u3010\u6e38\u620f\u6846\u67b6\u3011\u591a\u8fdb\u7a0b\u670d\u52a1\u5668"}]},{"@type":"WebSite","@id":"https:\/\/www.wsisp.com\/helps\/#website","url":"https:\/\/www.wsisp.com\/helps\/","name":"\u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","description":"\u9999\u6e2f\u670d\u52a1\u5668_\u9999\u6e2f\u4e91\u670d\u52a1\u5668\u8d44\u8baf_\u670d\u52a1\u5668\u5e2e\u52a9\u6587\u6863_\u670d\u52a1\u5668\u6559\u7a0b","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.wsisp.com\/helps\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"zh-Hans"},{"@type":"Person","@id":"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/358e386c577a3ab51c4493330a20ad41","name":"admin","image":{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/image\/","url":"https:\/\/gravatar.wp-china-yes.net\/avatar\/?s=96&d=mystery","contentUrl":"https:\/\/gravatar.wp-china-yes.net\/avatar\/?s=96&d=mystery","caption":"admin"},"sameAs":["http:\/\/wp.wsisp.com"],"url":"https:\/\/www.wsisp.com\/helps\/author\/admin"}]}},"_links":{"self":[{"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/posts\/22053","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/comments?post=22053"}],"version-history":[{"count":0,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/posts\/22053\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/media\/22033"}],"wp:attachment":[{"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/media?parent=22053"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/categories?post=22053"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/tags?post=22053"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/topic?post=22053"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}