传奇M2启动报错10048端口占用解决方法

来源: 作者: 点击:
Windows socket error 10048 表示服务端尝试绑定的网络端口已被其他程序占用。错误发生在调用 bind() 函数时,系统拒绝重复使用同一协议、IP 和端口组合。此问题在重启服务端过快或存在残留进程时尤为常见。

第一步:确认具体被占用的端口。查看M2Server.ini或Logingate.ini中的配置项,重点关注以下字段:
M2Server.ini → [Share] 段:Port=4960, GatePort=5100
Logingate.ini → [Main] 段:GatePort=5100;[M2Server] 段:M2Port=4960
LoginSrv.ini → Port=9091
这些端口(如4960、5100、7100、9091)任一被占用都会触发10048错误。

第二步:查找并结束占用进程。以管理员身份打开命令提示符,依次执行:
netstat -ano | findstr :4960
netstat -ano | findstr :5100
记下输出中的PID(进程ID)。再执行:
tasklist | findstr
若显示M2Server.exe、Logingate.exe 或 MirServer 相关进程仍在运行,说明上次关闭不彻底。使用:
taskkill /f /pid
强制终止。也可通过任务管理器 → 详细信息,按PID查找并结束。

第三步:检查多开冲突。若同时运行多个服务端实例,且未修改端口,必然冲突。每个独立区服必须使用唯一端口组。例如第二区应将M2Port改为4961,GatePort改为5101,并同步修改LoginSrv和客户端列表文件。

第四步:释放TIME_WAIT状态端口。Windows在程序关闭后会保留端口一段时间(默认240秒)。若频繁重启,可临时调整注册表缩短等待时间:
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesTcpipParameters
新建DWORD值 TcpTimedWaitDelay,设为30(秒)
新建DWORD值 MaxUserPort,设为65534
修改后需重启系统生效,适用于调试环境。

第五步:验证防火墙或虚拟网卡干扰。某些虚拟机软件(如VMware、VirtualBox)或VPN客户端会创建虚拟网卡,导致端口绑定异常。暂时禁用非主网卡,或在M2Server.ini中显式指定ServerAddr=127.0.0.1(仅限本机测试)或本机真实IP,避免监听0.0.0.0。

第六步:检查杀毒软件行为。部分安全软件会挂钩网络API,造成端口假性占用。临时退出360、电脑管家等,再启动M2测试。

完成上述操作后,按顺序启动DBServer → LoginSrv → Logingate → M2Server。若仍报错,更换M2Port为未使用端口(如4970),并确保客户端IP列表指向新端口。端口范围建议使用4900-5200之间,避开系统常用端口。