单机架设时登录器弹脚本错误,绝大多数指向远程列表读取失败。这个错误不涉及系统组件损坏,纯粹是登录器找不到它该读的那个列表文件,或者找到了但内容格式不认。
远程列表配置里藏着两个关键参数。第一个是列表地址,登录器启动时向这个地址发GET请求拉取game.txt或list.txt。第二个是列表内容格式,服务器区名、IP、端口、微端端口必须按固定分隔符排列。如果列表地址写错一个字符,或者内容格式里多了一个空格少了一个分隔符,登录器解析脚本时就卡在读取环节,直接抛出远程列表错误。
本地架设的情况下,列表地址通常填127.0.0.1或者本机内网IP。但很多人把端口号搞混了。列表请求走的是HTTP端口,默认80或者自定义的web端口。如果填成游戏网关端口7000,登录器发过去的是HTTP请求,游戏网关根本不认这个协议,连不上之后登录器报远程列表错误。检查LoginGate和LoginSrv的端口配置,区分清楚哪个端口负责列表读取,哪个端口负责帐号验证。
列表文件放在Web目录下的位置也很关键。登录器请求的地址是http://127.0.0.1/list.txt,那Web根目录下必须有这个文件。有人把列表文件放在子文件夹里,地址写成http://127.0.0.1/server/list.txt,但登录器里配的地址没带子文件夹路径,两边对不上就报错。还有文件名大小写的问题,Windows系统不区分大小写,但Linux系统区分,如果架设环境是Linux,list.txt和List.txt是两个不同文件。
列表文件内容格式错误直接导致解析失败。正确格式是每一行代表一个区,区名、IP、端口用指定符号隔开。比如电信一区|127.0.0.1|7000。如果写成电信一区 127.0.0.1 7000用空格分隔,登录器解析脚本读到这行就卡住。另外列表文件末尾不能有多余的空行,解析器读到空行会当作一个新区来识别,但缺少必要参数直接报错跳出。
Web服务没有正确启动也会触发这个错误。单机架设常用IIS或者Apache做Web服务器,服务没启动的话,登录器连127.0.0.1的80端口根本不通,报远程列表错误和网络超时。确认Web服务进程在任务管理器里是运行状态,并且绑定的端口没有被其他程序占用。用netstat -ano查一下80端口有没有LISTEN状态,没有的话重新启动Web服务。
防火墙拦截本地回环请求也会出现同样报错。Windows自带的防火墙或第三方杀毒软件会拦截127.0.0.1的入站请求,认为这是异常的内部访问。把登录器和Web服务进程都加入防火墙白名单,或者直接关闭防火墙做测试。防火墙放开之后,还是报错就检查hosts文件里127.0.0.1 localhost这一条有没有被注释掉或者删掉。
登录器本身还有一个列表缓存机制。第一次成功读取列表后会在本地存一份缓存文件,第二次启动时优先读缓存。如果缓存文件损坏,登录器读缓存失败再去请求远程列表,但这时可能网络或服务已经变化了,双重失败就弹脚本错误。删除登录器目录下的cache或tmp文件夹,强制登录器抛弃旧缓存重新获取列表。
微端配置错误有时候被误报为远程列表错误。微端端口和列表端口写反了,登录器把微端请求发到了列表端口,列表服务不认微端协议直接拒绝,登录器日志里出现远程列表获取失败的记录。微端端口和列表端口分开设置,列表走80或自定义HTTP端口,微端走专用端口,两者不能混用。
如果以上都排查过还是弹远程列表错误,换一个登录器生成器重新生成登录器。有些生成器生成的登录器在配置文件里写死了固定的列表URL,这个URL不可更改,只能通过重新生成来修正。生成时填入正确的本地列表地址,勾选允许本地列表选项,生成出来的登录器不再去请求外网地址,只读取本机指定的列表文件路径。
传奇单机架设登录器脚本报错:远程列表配置与本地解析修复
来源:
作者:
点击:

