Asynchronous socket error 10049和10060都属于套接字通讯报错,两个代码代表的故障方向不一样,先分开识别提示含义,再对照配置逐项核对,不用反复重装整套文件。
10049代表请求的地址无法绑定,或是填写的连接地址本身无效。登录器里面填写的目标地址格式错误,是最常见的诱因。单机测试时,应该使用本机回环地址,填写成其他无法识别的地址,就会直接弹出这个报错。还有网关监听配置里绑定地址写错,网关设置绑定固定地址,而登录器使用的地址和网关绑定地址不匹配,网关不会接收这个地址发来的连接请求。部分新手直接在网关绑定栏填写不存在的网卡地址,网关启动监听失败,表面上窗口正常打开,实际没有建立监听,客户端发起连接时触发10049。另外同一台机器上,多个网关重复绑定同一个地址端口,也会触发同类报错,一个端口只能被一个程序占用监听。
10060代表连接超时,客户端发送连接请求之后,长时间没有收到网关的应答,数据包发出去但是没有服务进行响应。这个报错和地址本身是否合法无关,地址格式是对的,但是通路不通。常见情况是网关没有正常启动、网关监听失败、端口被拦截,或是端口填写不一致。登录器内网关端口和网关配置里填写的监听端口数字对不上,客户端往错误端口发送消息,网关收不到,等待超时之后弹出10060。安全防护程序拦截网关进程的网络访问,也会直接阻断连接,客户端请求无法抵达网关。
先区分报错代码,再启动对应排查流程。出现10049优先核对地址填写,打开登录器配置工具,查看登录网关、角色网关地址,确认地址书写没有多余空格、换行、无效字符。单机环境下,网关的绑定地址不要随意填写网卡地址,留空或者填写本机回环地址,让网关自动监听。网关启动之后,查看网关窗口日志,确认提示监听成功,没有地址绑定失败的红色提示。如果网关日志本身就提示绑定失败,优先修改网关绑定地址,保存之后关闭网关,重新启动,再打开登录器测试。
出现10060,第一步确认网关已经正常启动并且监听成功。网关程序虽然窗口打开,但是端口被占用、被拦截,日志里会提示监听失败,这种状态下网关无法接收连接。使用端口查看工具,查询目标端口是否处于监听状态,没有监听记录,说明网关没有正常绑定端口。核对登录器和网关两边端口数字,数字必须完全一致,一个数字写错就会超时。检查安全防护策略,网关程序的网络访问权限被限制,数据包会被拦截,临时关闭防护程序测试,测试正常之后,把网关、M2、登录器程序加入信任列表,放开网络权限。
还有登录器识别码的影响,识别码不一致,部分版本会先出现10060超时报错,而不是直接提示识别码错误。核对网关配置内的识别码,复制粘贴到登录器配置,重新生成登录器,旧登录器缓存配置不会自动更新,修改之后必须使用新生成的登录程序测试。不要直接修改已经打包好的登录器配置文件,配置没有写入,依旧会持续报错。
启动顺序问题也会引发临时的10060,刚点开网关,立刻打开登录器登录,网关还没有完成监听初始化,连接请求发过去没有应答,触发超时。全部网关启动完成之后,等待一小段时间,确认日志显示监听成功,再运行登录器。如果多个网关,登录网关、角色网关分开检查,登录阶段报错优先看登录网关,进入角色加载阶段报错,重点检查角色网关。
还有一种情况,配置地址填写域名,域名解析失败,也会出现10060。单机测试不建议使用域名,直接使用地址,避免解析环节带来额外故障。文件路径带中文、网关配置文件编码异常,也会造成网关启动监听异常,看起来网关打开了,实际没有正常监听端口,客户端连接超时。
测试的时候可以做简单对照,先在本机用正确地址端口测试,排除配置问题。修改配置之后,必须关闭所有网关、M2进程,全部重启,网关的旧连接缓存不会自动清空,继续使用旧进程测试,报错会反复出现。每次改动登录器配置,都要重新生成登录器,替换旧的登录程序,清理客户端缓存再测试。
日志是判断关键点,网关日志如果收到客户端连接记录,说明通路没问题,故障在后续交互;日志完全没有客户端接入记录,就是地址、端口、拦截、监听这一类基础网络问题。不要同时改动地址和端口,一次只修改一项,测试之后再调整下一项,方便定位到底是哪一项参数错误。
传奇登录器报错10049与10060原因分析 异步套接字错误排查修复
来源:
作者:
点击:

