单机传奇登录器列表为空排查:从进程到编码的完整修复路径

来源: 作者: 点击:
登录器显示“服务器列表为空”,意味着它没有从指定位置成功读取或解析出任何有效的服务器条目。单机环境下这个问题几乎不涉及真正的远程网络,故障点集中在三个环节:登录器能否找到列表文件、文件内容是否符合其解析规则、承载列表的服务是否在运行。按链路顺序排查比逐个试错效率更高。

先确认服务端登录网关处于监听状态。列表为空有时被误判为列表文件问题,实际是登录器根本没有可指向的对象。按DBServer→LoginSrv→LoginGate→M2Server的顺序启动后,打开任务管理器确认LoginGate.exe或RunGate.exe进程存在,并记录登录网关实际监听的端口,默认通常为7000。如果网关进程不存在或启动后闪退,先解决服务端启动问题,列表配置得再正确也没有意义。用`netstat -ano | findstr :7000`确认端口处于LISTENING状态,被其他程序占用时更换端口并同步修改后续所有配置。部分服务端自带的简易启动工具会同时拉起一个本地Web服务用于列表读取,该进程被关闭后登录器同样会显示空列表,启动服务端后不要关闭额外的命令窗口或小型Web服务器进程。

列表文件的位置和文件名必须与登录器读取方式严格对应。如果登录器配置器采用的是“读取本地列表”模式,列表文件通常需要放在登录器exe同级目录或客户端根目录,文件名(如ServerList.txt或list.txt)要与配置器中填写的名称完全一致,不能放进Data、Patch等子文件夹。Windows默认隐藏已知文件扩展名,新建文本文档重命名时容易生成“ServerList.txt.txt”,登录器按ServerList.txt查找自然找不到文件。服务端或配置器文件夹中一般自带列表模板文件,直接复制模板到目标位置再修改内容,比从空白文档手动创建更不容易出现文件名偏差。如果使用的是HTTP列表地址模式,文件位置由本地HTTP服务的虚拟目录决定,与登录器目录无关,两种情况不要混用。

文件存在且路径正确时,格式和编码是下一道关卡。不同引擎的列表格式不能通用,必须按照服务端所用引擎自带的列表模板来写,不要拿别的版本的列表文件直接套用。以常见的竖线分隔格式为例,单机正确写法是“区服名称|127.0.0.1|7000”,竖线必须是英文半角,IP固定为127.0.0.1,端口与登录网关监听端口一致,行首行末不能有多余空格。另一种常见格式为“[服务器列表]”开头,后续每行写“序号|名称|127.0.0.1|端口”。格式错误中比较隐蔽的是全角符号,中文输入法下的“|”和英文“|”肉眼不易分辨,但解析结果完全不同。编码问题同样高频:传奇系登录器普遍按ANSI读取文本,现代Windows记事本默认保存为UTF-8,UTF-8编码的列表文件在登录器侧表现为乱码或直接解析为空。用记事本打开列表文件,另存为时在编码下拉框中选择ANSI,覆盖保存后重新打开登录器测试。如果已经确认格式和编码正确仍然为空,将列表文件内容缩减到仅保留一行有效的服务器信息,排除多行数据中某一行的隐藏字符导致整体解析中断。

单机环境下列表地址填的是本地路径或本地HTTP地址,但“本地”不等于“直接可读”。如果配置器中使用的是HTTP地址模式,例如`http://127.0.0.1:端口/列表文件名.txt`,那么必须有一个本地HTTP服务在对应端口上真正提供这个文件。直接填写`http://127.0.0.1/list.txt`而不启动任何Web服务,登录器发起请求时连接被拒绝,结果就是空列表。最直接的办法是复制配置器中的完整列表地址到浏览器地址栏访问:浏览器能显示出列表文本内容,说明地址和文件发布都正常,问题在登录器侧;浏览器打不开或提示无法连接,说明本地HTTP服务未运行或文件未放入其虚拟目录。HFS这类简易HTTP工具可以将本地文件以HTTP形式发布,把列表文件拖入HFS窗口,得到的地址形如`http://127.0.0.1:端口/文件名.txt`,将该地址填入登录器配置器即可。端口不要选择已被占用的值,单机列表HTTP端口建议在1320至1340之间选取未占用端口,避免与系统或其他程序冲突。如果配置器支持`file://`协议直接读取本地文件,也可以改用`file:///D:/路径/列表.txt`的形式绕过HTTP服务,但路径中的盘符和文件夹名必须完全准确,且部分登录器对file协议的支持并不完整。

环境拦截和引擎特有设置是列表为空的最后一层干扰。Windows防火墙或第三方安全软件可能拦截登录器访问本地HTTP端口或登录网关端口,表现与列表文件缺失完全一样。临时关闭防火墙测试,如果列表出现,说明是拦截所致,再为登录器主程序和M2Server、LoginSrv添加例外规则,而不是长期关闭防火墙。GOM引擎还需要检查控制器中的防劫持选项,该功能启用时可能拦截正常的本地列表请求,在引擎设置中暂时关闭防劫持后重启网关和引擎,再测试列表是否恢复。如果以上环节全部正确但登录器依然空白,检查登录器与服务端引擎是否属于同一版本线:GOM服务端必须配GOM登录器配置器生成的登录器,Hero引擎配Hero系登录器,引擎与登录器不匹配时列表格式和握手协议本身就不兼容,换用服务端自带配置器重新生成登录器是唯一可靠的排除方式。客户端根目录下如果存在旧的loginserver.txt或残留的列表缓存文件,也可能干扰新列表的加载,删除后重新打开登录器让其重新获取一次。