connection closed 就是“连接被关掉”。注册新用户时,登录器把账号密码发给登录服务/账号服务,对方没接住,直接把 TCP 断了。能看见服务器列表、能点注册,但一提交就 connection closed,说明链路前面通了,注册这一环断了。
一、账号服务根本没起来
老传奇里负责注册的是 LoginSrv / 账号服务器 / LoginServer。
M2、RunGate 起来了也不代表它能收注册请求。
看任务栏/控制器里有没有:
• LoginSrv.exe
• LoginServer.exe
• 账号服务器.exe
• Logsrv.exe
窗口闪一下就没,常见原因:
• 缺 MSVCR100.dll / VCRUNTIME / VB6 运行库
• LoginSrv.ini 路径错
- 端口被占
• 配置文件里 IP 写成空或乱码
• 杀软把 LoginSrv.exe 删了
处理:
进 LoginSrv 目录看日志(!SetupLogLogin.log、LoginSrv.log),红字写啥就修啥。没日志就重装 VC2005-2013 + VB6 运行库,把 LoginSrv.exe 加杀软白名单,再起。
二、LoginGate 和 LoginSrv 没连上
客户端 → LoginGate(登录网关) → LoginSrv(账号服务) → 数据库。
网关起了,但网关连不上账号服务,注册请求过去就被弃掉,登录器就报连接关闭。
查 LoginGate.ini / LoginGate.cfg:
ServerIP=127.0.0.1
ServerPort=5500 或 5600
LoginSrv 那边监听的也必须一样。
网关连账号服务失败的表现:
• 网关日志里 connect login server failed
• 能看列表,注册/登录全断
• 有时点登录直接“连接已关闭”
处理:
LoginSrv 先起,LoginGate 后起;都填 127.0.0.1;端口两边一致;别把 LoginSrv 绑 127.0.0.1 而网关填 192.168.x.x。
三、数据库写不进去
注册本质就是往账号库插一条记录。
库没起、路径错、文件只读、权限不够,都会让服务端在写库时异常,随后关连接。
分类型看:
1. DBC2000 / HeroDB
控制面板 → BDE Administrator → HeroDB
PATH 指向:
D:\MirServer\Mir200\Mud2\DB
别指中文路径。
Account.db / Idx 文件要在目录里。
服务端目录右键 → 安全 → 当前用户完全控制。
2. MSSQL
sa 密码错、库没还原、DBHost 不是 127.0.0.1、MSSQL 服务没自动启动,都会让 LoginSrv 起不来或注册时崩。
3. MySQL
MySQL 服务没起、8.0 版本太新、账号密码不对、库名不对,注册直接断。
处理:
先手动开数据库服务,再看 LoginSrv 能不能连上库。库都连不上,注册不可能成功。
四、服务端关了“允许注册”
很多端默认:
AllowReg=0
AllowRegister=0
允许新用户注册=否
这时候登录器发注册包,服务端不处理,直接断。
表现就是:登录失败有提示,注册一提交就 connection closed / 服务器已关闭。
查:
• LoginSrv.ini 里 AllowReg=1
- M2/引擎配置器 → 游戏参数 → 允许新账号注册 打勾
• 有些端还有 EnableRegister=1
• 有些 HERO 端在 HeroM2.ini / 登录服务配置里关了注册
单机自己玩直接开:
AllowReg=1
AllowRegister=1
EnableRegister=1
改完重启 LoginSrv 和 M2。
五、登录器和引擎不对号
GOM 登录器去连 HERO 账号服务,注册协议对不上,服务端解析失败,关连接。
HERO 登录器连 GOM 端也一样。
判断:
• 列表能出,但注册/登录都异常 → 登录器大概率不对
• 用“万能登录器”能看列表,但注册断 → 万能登录器只够看列表,不够走注册协议
• 服务端包里 LoginGate / RunGate 和登录器不是一批生成 → 必炸
处理:
用服务端自带“生成登录器”重新生成,IP 填 127.0.0.1,端口填开区端口(常 7000)。
别拿发布站随便下的登录器硬连。
六、端口被占
注册不一定走 7000,账号服务常走 5500 / 5600 / 7100 / 8001 之类。
你机器上:
• 迅雷
• 宝塔
• 数据库
• 上次的 Mir 进程没关
• 重复点了好几次 GameCenter
都会占端口。LoginSrv 起不来或起了但绑定失败,注册包没人听,连接被关。
cmd:
netstat -ano | findstr 5500
netstat -ano | findstr 5600
netstat -ano | findstr 7100
看到 PID 去任务管理器杀掉重复 Mir/LoginSrv/RunGate 进程,重启电脑最干净。
七、杀软把注册链路吃了
Defender / 360 / 火绒 常干的事:
• 删 LoginSrv.exe
• 拦 LoginGate 监听
• 拦登录器发网络包
• 把 Account.db 锁成只读
- 运行时注入检测,服务端进程异常退出
表现:
刚架好能注册,重启电脑后不行了;
关杀软就能注册,开杀软就 connection closed。
处理:
整个 MirServer 目录、客户端目录、登录器 exe 全加白名单。
Defender 实时防护关掉测一次。别只加一个 exe。
八、路径有中文/空格
D:\我的传奇\服务端
D:\Mir Server
C:\Users\张三\Desktop\MirServer
这种路径老 Delphi/C++ 服务端会读错配置、找不到 DB、BDE 建不出 HeroDB。
正确:
D:\MirServer
D:\MirClient
纯英文,别放桌面,别放 Program Files。
DBC2000 的 PATH 也别手敲带空格。
九、!addrtable.txt 格式错
部分端 LoginSrv 靠 !addrtable.txt 知道“哪个服务器名对应哪个 IP 端口”。
格式大概:
游戏名 Title1 127.0.0.1 127.0.0.1 127.0.0.1:7000
写错成:
游戏名127.0.0.1
7000
或者服务器名带空格、端口对不上,登录器能拿列表,但注册/进游戏时服务端找不到对应区,直接断。
处理:
照同版本原端示例改,别照别的引擎格式抄。
十、重复启动把状态搞脏了
很多人架传奇:
点一下 GameCenter 没反应,再点一下,再点一下。
结果:
• 两个 LoginSrv
• 两个 DBSrv
• 两个 RunGate
• 端口互相抢
• 注册包发到半死不活的那个进程
处理:
任务管理器把 Mir、Login、DB、Gate、M2 相关进程全结束,重启电脑,只起一次 GameCenter,看每个窗口都到 Ready / 监听成功 再注册。
十一、单机最稳的注册打通顺序
1. 纯英文路径 D:\MirServer
2. DBC2000 建 HeroDB,PATH 指向 Mud2\DB;用 MSSQL 就先起 MSSQL 并还原库
3. 所有配置 IP 写 127.0.0.1
4. LoginSrv.ini 里 AllowReg=1
5. 启动顺序:数据库 → DBSrv → LoginSrv → LoginGate → RunGate → M2
6. LoginSrv 窗口显示监听账号端口
7. 用本端生成器出登录器,列表 127.0.0.1:7000
8. 账号 4-12 位字母数字,别用 admin/test/root
9. 杀软白名单
10. 注册成功后再建角色
十二、快速定位:三种现象对号
能看列表、点注册立刻 connection closed
→ LoginSrv 没起 / 注册被关 / 登录器协议不对
能看列表、点注册转圈后断开
→ 网关连不上账号服务 / 数据库写不下 / 端口占用
能看列表、注册完说账号不存在
→ 写库了但角色库/账号库没同步,或用了两个库(账号在 A 库,角色在 B 库)
十三、配置文件速查
LoginSrv.ini / LoginServer.ini:
[Server]
Port=5600
[Config]
AllowReg=1
ServerIP=127.0.0.1
LoginGate.ini:
ListenAddr=0.0.0.0
ServerIP=127.0.0.1
ServerPort=5600
GatePort=7000
!Setup.txt / 引擎配置器:
ServerIP=127.0.0.1
DBHost=127.0.0.1
AllowRegister=1
EnableRegister=1
登录器列表:
单机1.76 127.0.0.1 7000
十四、还不行就看日志别看弹窗
登录器只会在乎“断了”,不会告诉你为啥断。
真原因在:
• LoginSrv.log
- DBServer.log
• LoginGate.log
• M2 控制台最后几行
• Windows 事件查看器里 LoginSrv.exe 崩溃记录
看到:
cannot connect database → 库配置错
port already in use → 端口被占
table Account open fail → HeroDB/PATH/文件权限错
reg disabled → 关了注册
unknown packet → 登录器不对
accept then close → 插件/杀软/协议错
十五、插件也会搞事
Mir200\PlugList.txt 里塞了一堆第三方 dll:
• 注册限制插件
• 防沉迷插件
• 商业登录器验证插件
- 网页注册中间件
老端加载这些 dll 崩了,LoginSrv/M2 异常关连接。
单机先只留引擎自带插件,PlugList.txt 里其他的注掉,重启测注册。
十六、网页注册和客户端注册两回事
有些端把客户端注册关了,强制去 http://xxx/reg.php 网页注册。
你非在登录器点“注册新用户”,服务端不处理,关连接。
处理:
看登录器有没有“前往注册/网页注册”按钮;
有就走网页;
没有又报 connection closed,就是前面 LoginSrv / 库 / 登录器 的问题。
十七、一句话
connection closed 不是“网络坏了”,是“账号服务收到注册包但不会/不能处理,然后把连接关了”。
先确认 LoginSrv 活着,再确认 AllowReg=1,再确认 HeroDB/MSSQL 能写,再确认登录器和引擎同版本,最后关杀软清端口。这四关过了,注册基本就通。
传奇注册新用户提示connection closed:账号服务断开原因
来源:
作者:
点击:

