传奇单机架设列表读取失败常见原因与完整排查方法从配置到端口详解

来源: 作者: 点击:
列表读取失败最直接的表现是登录器弹出提示框,服务器列表一片空白,或者列表能显示但点击后没有反应。单机架设出现这个问题,先不要重装服务端,按下面顺序排查,多数情况十分钟内能定位。

先查列表地址。打开登录器目录,找到Login.ini、ServerList.ini或list.txt。单机架设的列表地址必须指向本机,填外网域名、路由器地址或别人给的远程列表都会失败。把主列表地址和备用列表地址全部改成127.0.0.1。改完在浏览器地址栏输入 http://127.0.0.1/list.txt ,看能不能显示列表内容。浏览器都打不开,说明列表服务器本身没跑起来,登录器自然读不到。

列表服务器没启动是高频原因。单机环境不需要远程列表,用本地列表服务器小程序,和list.txt放在同一个文件夹,双击启动,提示服务已启动即可。也可以用phpStudy或IIS把list.txt所在目录映射成http服务。端口默认80被占用时改成8080,登录器里的列表地址要同步改成 http://127.0.0.1:8080/list.txt 。防火墙要放行这个端口,否则浏览器能开,登录器却读不到。

列表文件格式必须严格对照引擎示例。常见格式是服务器名称|IP|端口|,竖线分隔,每行一条。单机只保留一条记录,服务器名称不要带星号、井号、问号,IP写127.0.0.1,端口写服务端Setup.txt里的LoginPort。文件保存时用Notepad++查看编码,选ANSI或UTF-8无BOM。带BOM的UTF-8会让部分引擎直接解析失败。检查文件末尾有没有多余空行,行内有没有隐藏的制表符,肉眼看不出来就用Notepad++的显示所有字符功能看一遍。文件属性取消只读。

服务端进程状态决定列表能不能被生成。打开任务管理器,确认LoginSrv.exe、M2Server.exe、GameSrv.exe、DBSrv200.exe都在运行。LoginSrv.exe没起来或者启动后闪退,登录器即使能读到列表文件,点击服务器也会卡住。启动顺序不能乱,先启动数据库服务,再启动LoginSrv,等提示成功后再启动GameSrv,最后启动网关。LoginSrv闪退时打开LoginSrv文件夹里的配置文件,核对ListenPort和ServerIP。日志文件在Log目录下,搜索bind failed或connect refused。

端口占用要第一时间查。命令提示符输入 netstat -ano | findstr "7000" ,返回结果里有LISTENING但PID不是服务端进程,说明端口被别的程序占了。迅雷、酷狗、直播软件、模拟器都可能抢占7000和7100。任务管理器按PID结束占用进程,重启服务端。如果7000端口频繁被抢,把Setup.txt里的LoginPort改成7001,GamePort改成7101,同时修改LoginGate.ini、列表文件和登录器配置,四处端口必须完全一致。改完用 telnet 127.0.0.1 7001 测试,屏幕变黑或显示连接成功说明端口通了。

防火墙和杀毒软件拦截在Windows 10和Windows 11上尤其常见。把整个服务端文件夹和客户端文件夹加入杀毒软件白名单。Windows安全中心里进入病毒和威胁防护,管理设置,添加排除项。Windows Defender防火墙高级设置里添加入站规则,允许TCP端口7000到7200。临时关闭实时保护测试,如果关闭后列表能读出来,说明就是拦截导致,再配置精确例外,不要长期关闭防护。服务端主程序和登录器都右键属性,兼容性选项卡勾选以管理员身份运行。

引擎和登录器不匹配会让列表解析直接失败。GOM引擎必须配GOM登录器,GEE引擎必须配GEE登录器,GOM服务端配GEE登录器,列表格式对不上,读出来也是乱码。查看服务端主目录的引擎说明,确认引擎类型。登录器配置器里EngineType选对型号。客户端Game.exe右键属性看产品版本,和服务端来源必须一致。拼凑不同来源的服务端和客户端,列表读取失败几乎必然发生,换整合包最省事。

数据库异常会间接导致列表服务不工作。Access数据库方案确认DB目录下的文件存在且没被只读锁定,Win10和Win11需要安装Access Database Engine。DBC2000用户打开BDE Administrator,确认HeroDB路径指向服务端Mud2\DB。MySQL方案检查DBConfig.txt中的DBHost为127.0.0.1,DBPort为3306,DBUser和DBPass与数据库实际配置一致。执行 net start mysql 确认数据库服务已启动。数据库连不上时,LoginSrv初始化会卡死,进程虽然存在但CPU占用为零,列表服务也不会生成。

本地列表服务器的细节容易被忽略。hosts文件里加一行 127.0.0.1 localhost ,避免localhost解析异常。系统启用了IPv6但旧版网关不支持时,在网络适配器属性里取消勾选Internet协议版本6,只保留IPv4。命令提示符执行 netsh interface tcp set global autotuninglevel=disabled 关闭TCP自动调优,重启电脑。登录器目录下的Cache和ListCache文件夹删除,避免读取旧的缓存列表。

不同故障现象对应不同方向。列表空白:列表地址错、列表服务器没开、文件编码错。提示读取失败:网络不通、端口占用、防火墙拦截。列表能显示但点击无反应:服务端进程未启动、端口不匹配。提示文件不存在:路径写错、文件名大小写不一致。提示连接超时:IP端口配置错误、防火墙丢包。提示连接被拒:端口没有程序监听、服务端进程崩溃。

修改任何配置后,完全关闭登录器和服务端,删除日志目录下的ScriptCache.dat,重新启动。用浏览器再次访问列表地址确认能显示,再打开登录器看列表是否正常。服务端控制台没有红色报错,任务管理器核心进程CPU占用正常,基本就恢复了。如果仍然失败,打开Log目录下的LoginSrv.log和M2Server.log,搜索bind failed、connect refused、Access denied,日志里的错误行会直接指出是端口、IP还是数据库问题。