工程参考/配置文件/Server/BillingInfo.ini
这份文件配置 Billing 的账号数据库、允许哪些服务连接 Billing,以及登录人数限制。它不提供玩家登录入口,Billing 的监听端口取自 ServerInfo.ini 的 [Billing] Port0。
文件位置与生效
| 项目 | 说明 |
|---|---|
| 服务器运行路径 | Server/Config/BillingInfo.ini,以程序实际工作目录为准;源码 resources 中的文件是样本。
|
| 主要使用者 | Billing 读取数据库及限制;访问名单由 Billing 监听管理器读取 |
| 生效方法 | 这六份文件通过公共初始化流程读取,主要使用者在本页标明;不需要把它们复制到玩家客户端。重新加载配置的入口没有重读本页字段。修改后按正常流程保存并停服,再重启使用这份配置的程序;服务共用同一 Config 目录时,相关进程须使用一致配置。 |
| 样本格式 | ASCII,换行为 CRLF;保留原编码、节名、键名与换行,不自动改成 UTF-8。
|
[System] 配数据库和自动注册;[Access] 配内部来源 IP;[Limit] 配登录数量限制。三组互不替代。
文件格式
使用 [节名] 与 Key=Value。节名和键名按源码拼写保留;本读取器按大小写精确匹配,节标题从行首开始。推荐沿用原有 CRLF 换行,在单独一行用分号写注释,不向值里插入制表符,也不依赖引号转义。详细读取边界见修改约定。
字段详解
表中“必填”表示读取代码要求存在,并不表示程序已校验业务取值合法。序号字段中的 [n] 表示按数量展开,不能原样写成带 [n] 的键。
[System]
| 项目与类型 | 含义与修改要点 | 缺项或特殊值 |
|---|---|---|
DBIP字符串,地址 |
保存配置中的数据库主机地址。当前核对的 ODBC 连接代码没有把它传入 SQLConnect;实际主机由 DBName 指定的数据源配置决定。修改它不能代替修改 ODBC 数据源。 | 需提供有效连接信息;不要依赖缺项或错误数据源。 |
DBPort整数,端口 |
保存配置中的数据库端口。当前连接调用不使用此值建立连接;实际端口在对应 ODBC 数据源中设置。不能填游戏或登录端口。 | 需提供有效连接信息;不要依赖缺项或错误数据源。 |
DBName字符串,ODBC 数据源名 |
作为 SQLConnect 的数据源名称传入。它要对应服务器电脑上已配置的 ODBC DSN;不一定等于数据库中的库名。数据源内部还需选对实际数据库。 | 需提供有效连接信息;不要依赖缺项或错误数据源。 |
DBUser字符串 |
连接数据库使用的用户,不是玩家账号或 Wiki 账号。应具有目标数据库所需权限。 | 需提供有效连接信息;不要依赖缺项或错误数据源。 |
DBPassword字符串 |
数据库用户的密码;当前 Billing 连接直接传入此字符串,没有读取 CryptPwd 的分支。不要在本文件凭空添加 CryptPwd 期待解密。 | 需提供有效连接信息;读取缺项没有可靠的可用默认值。 |
AutoRegister整数,0/非0 |
缺少账号时是否允许认证流程自动创建账号。0 关闭,非 0 开启;需要正确数据库结构和客户端请求,不能替代完整注册与权限管理。 | 缺失时 FALSE,即关闭。 |
[Access]
| 项目与类型 | 含义与修改要点 | 缺项或特殊值 |
|---|---|---|
AllowIPCount整数,0 到 16 |
允许连接 Billing 的来源地址数量。0 或缺失时本名单不限制来源;正数时读取连续 AllowIP0 到 AllowIP[n-1]。负数或超过 16 会使初始化失败。 | 缺失时 0。 |
AllowIP[n]IPv4 字符串,精确匹配 |
填写 Login 等服务连接 Billing 时实际呈现的来源 IP。源码使用字符串相等判断,不支持 CIDR、星号或 IP 段。名单启用时缺少条目、空条目或长度超限都会使启动失败。 | n 从 0 到 AllowIPCount-1。 |
[Limit]
| 项目与类型 | 含义与修改要点 | 缺项或特殊值 |
|---|---|---|
MaxClientCount整数,登录数量 |
正数限制 Billing 记录的总登录数量;显式填写 0 或负数时转换为 0,表示不启用此项限制。它不是 TCP 连接池大小。 | 缺失时默认 500。 |
PcMaxClientCount整数,同机器标识登录数量 |
按客户端上报的 MAC 标识统计同机器登录数量;不是按公网 IP 统计,也不能保证识别物理电脑。正数启用,0 或负数转换为 0 表示不启用。 | 缺失时默认 3。 |
常用修改实例
以下均是局部教学片段,修改原文件对应位置,不能覆盖整份文件。IP、编号、周期均为教学值。
单机部署中只允许本机服务连接 Billing
修改前的教学片段:
[Access] AllowIPCount=0
修改后:
[Access] AllowIPCount=1 AllowIP0=127.0.0.1
先确认 Login 到 Billing 的连接使用 127.0.0.1;若实际来源是局域网地址,就填写那个实际来源。保留其他组。这里填写的是服务来源,不是朋友的客户端 IP,名单生效后核对 Login 仍能连接 Billing。
验证与排查
重启相关服务,检查 Billing 日志中的数据源连接结果、名单数量和登录限制;确认 Login 连接成功,再测试已存在账号。自动注册或数量限制修改需要分别实测,不只看端口打开。
当前 Windows 工程为 Billing 设置专用编译条件,使用 BillingInfo.ini 数据库分支。Login 等进程读取 ServerInfo.ini 的 [Billing] 地址列表;不要把二者混淆。DBName 是 ODBC 数据源名,数据库地址须在对应位数的数据源中核对。
关联与依据
ServerInfo.ini · LoginInfo.ini
Common/ServerBase/Config.cpp:加载位置、字段读取与重新加载范围Common/ServerBase/Config.h:初始化值与配置结构Common/ServerBase/Ini.cpp:INI 实际解析规则Common/ServerBase/Ini.h:读取失败与返回方式Common/ServerBase/FileDef.h:运行时相对路径Common/GameDefine2.h:程序类型与共享内存类型枚举Server/Server_2026_Project.props:当前 Windows 工程的条件编译定义Server/Server/BillingServer/Billing/Main/ServerManager.cpp:字段使用、连接或数据处理分支Server/Server/BillingServer/Billing/Main/ServerManager.h:字段使用、连接或数据处理分支Server/Server/BillingServer/Billing/Main/UserDBManager.cpp:字段使用、连接或数据处理分支Server/Server/BillingServer/Billing/Main/DBManager.cpp:字段使用、连接或数据处理分支Server/Server/BillingServer/Billing/Main/ODBCInterface.cpp:字段使用、连接或数据处理分支
核对范围为当前维护源码与配置样本;未启动游戏、服务端或数据库。配置解析测试与游戏业务测试分开记录;文中运行效果仍需要实测。