三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

IPXWrapper使用指南:4步让老游戏在现代Windows上重开局域网联机

IPXWrapper使用指南:4步让老游戏在现代Windows上重开局域网联机

IPXWrapper使用指南:4步让老游戏在现代Windows上重开局域网联机

【免费下载链接】ipxwrapper项目地址: https://gitcode.com/gh_mirrors/ip/ipxwrapper

想象这样一个周五晚上:你和老同学约好重打一把《红色警戒2》,两台电脑连在同一个路由器下面,视频通话都通着,可进了游戏大厅,列表里死活看不到对方的名字。你重装游戏、关掉杀毒软件、换网线,折腾到半夜依然无解——问题压根不在你的电脑,而在系统和你玩的游戏之间,早就断了"共同语言"。

这个场景的主角,就是本文要讲的IPXWrapper——一个免费、开源的协议转换工具,专门用来让依赖 IPX/SPX 协议的老游戏,在 Windows 10、Windows 11 这类现代系统上重新找回局域网联机的能力。接下来你会看到它为什么能解决这个难题、怎么在十分钟内跑起来,以及不同游戏的具体配置方案。

一、老游戏"失联"的真相:系统不再说 IPX 这门语言

先说结论:从 Windows Vista 开始,微软就从系统里移除了 IPX/SPX 协议栈。这个协议诞生于 Novell NetWare 时代,是 2000 年代局域网游戏的标准通信方式。而现代 Windows 只保留 TCP/IP,等于老游戏还在用方言喊话,系统却只会听普通话。

具体到联机失败,通常有三个叠加的原因:

  • 协议断层:游戏调用socket(AF_IPX, ...)创建 IPX 套接字时,系统直接报错,程序自然没法开始通信。
  • 广播被丢弃:老游戏靠 IPX 广播包在局域网里"喊人",这种广播在现代网络栈和网卡驱动里往往被直接忽略。
  • 安全策略拦截:Windows 防火墙默认放行规则是针对现代应用的,老游戏的通信方式不符合它的预期,连接被悄悄掐断。

IPXWrapper 的思路很直接:既然系统不会说 IPX,那就派一个"同声传译"过去,它替游戏说 IPX,替系统说 UDP/TCP,两头都能听懂。

二、它到底在背后做了什么:一场"同声传译"的戏

把 IPXWrapper 想成一个驻扎在游戏进程里的翻译官,它的日常工作分五步:

  1. 偷听指令:通过 DLL 代理机制,游戏调用 WinSock、DirectPlay 等网络 API 时,调用会先落到 IPXWrapper 手上,而不是直接进系统。
  2. 改写地址:把 IPX 的"网络号 + 节点号"这套寻址方式,翻译成现代网络通用的"IP 地址 + 端口",并维护一张映射表。
  3. 封装数据:把 IPX 数据包整个塞进 UDP 数据报里发出去——IPX 数据变成了可以在现代网络上跑的"快递包裹"。
  4. 转发广播:在局域网内用 UDP 广播模拟 IPX 广播,让游戏仍然能"喊到人"。
  5. 反向翻译:接收端再把这些 UDP 包裹拆开,还原成 IPX 数据包交给游戏,游戏完全感知不到自己换了网络协议。

它有三种工作模式,分别对应不同的联机场景:

模式用途注意点
默认(UDP 封装)多台电脑都装 IPXWrapper 的局域网对战最常用,支持 SPX
DOSBox UDP 封装走 DOSBox 的 IPX 服务器联机,支持互联网对战不支持 SPX 连接
真实 IPX 封装(需 WinPcap)与只认 IPX 的老设备通信不支持 SPX 连接

兼容范围一句话概括:使用 WinSock 1.x 或 DirectPlay 8.0 之前版本的游戏,基本都在覆盖范围内。

三、十分钟上手:下载、部署、注册,一个都不能少

整个安装过程没有驱动、没有系统补丁,就是"放几个文件 + 注册一下"。

第 1 步:拿到工具包

打开终端,克隆项目仓库(或用仓库里现成的发布包):

git clone https://gitcode.com/gh_mirrors/ip/ipxwrapper

第 2 步:把 4 个 DLL 放进游戏目录

编译或下载发行版后,你会看到四个关键的 DLL,把它们原样复制到游戏可执行文件所在的目录

文件扮演的角色
ipxwrapper.dll核心翻译引擎,负责 IPX↔UDP 的转换与转发
wsock32.dll模拟传统 WinSock 接口,接住游戏对老 API 的调用
dpwsockx.dll处理 DirectPlay 游戏的网络请求
mswsock.dll系统兼容层,补全底层符号

这一步很关键:wsock32.dll等文件名与系统同名,但放在游戏目录里会优先于系统版本被加载,这正是"拦截"生效的前提。如果复制错了目录,后面一切配置都白搭。

第 3 步:按系统位数注册 DirectPlay 组件

双击运行其中一个注册表文件:

  • 64 位 Windows:运行directplay-win64.reg
  • 32 位 Windows:运行directplay-win32.reg

它会补上 DirectPlay 服务提供者相关的注册表项,很多游戏(比如《VR特警》)在枚举协议时会依赖这些键值,漏掉这一步游戏可能直接报"找不到协议"。

第 4 步:用 ipxconfig.exe 选定网卡

运行配置工具ipxconfig.exe,在接口列表里指定"主接口"。默认情况下 IPXWrapper 会在所有网卡上同时工作,如果你的局域网里还连着其他安装了 IPXWrapper 的机器,多网卡广播反而会造成混乱,所以建议主动收敛:

网络类型建议做法理由
有线以太网设为"主接口"延迟低、丢包少,对战首选
无线 Wi-Fi一律禁用广播不稳定、延迟抖动大
虚拟网卡不参与容易造成地址冲突和重复广播

四、常见玩法逐一配置:从星际争霸到 DOSBox

不同游戏的习惯不同,下面几套方案可以直接照抄。

星际争霸:兼容模式 + 管理员权限

DLL 就位后,右键游戏图标 → 属性 → 兼容性,勾选"以兼容模式运行",选择Windows XP (Service Pack 3),再勾选"以管理员身份运行此程序"。这能避开老程序在现代 Windows 上的权限和渲染问题。

红色警戒 2:锁死网卡 + 固定 IP

; 与 game.exe 同目录放置 ipxwrapper.ini 即可生效, ; 它优先级高于 ipxconfig.exe 写入的注册表配置 ; 关闭日志,正常游戏用不到 logging = none

同时在 ipxconfig 里禁用所有无线适配器,并建议给两台机器设置固定 IP。红警 2 对广播一致性比较敏感,网卡一多就容易"看不见人"。

暗黑破坏神:数据包合并 + 防火墙例外

; 开启数据包合并:发送大量小包时合并成大包,减少丢包、提高吞吐 coalesce packets = yes ; 启动时自动为程序创建 Windows 防火墙例外 firewall exception = yes logging = none

注意:coalesce packets需要所有参与联机的电脑都运行 0.7.1 或更高版本,否则新旧版本之间不兼容。

DOSBox 集成:老 DOS 游戏也能上桌

如果你的《英雄无敌 3》跑在 DOSBox 里,先在 DOSBox 的配置文件中打开 IPX 服务:

[ipx] ipx=true server=192.168.1.100 port=213

然后把 IPXWrapper 的 4 个 DLL 复制到 DOSBox 虚拟 C 盘的游戏目录,再在 ipxwrapper.ini 里指向服务器:

; 走 DOSBox IPX 服务器联机,可跨互联网 dosbox server address = 192.168.1.100 dosbox server port = 213 logging = none

再次强调:这个模式下 SPX 连接不可用,流式传输类游戏请换回默认模式。

与真实 IPX 设备互通

如果是要和只认 IPX 的老设备(比如老式工业设备或老主机)通信,安装 WinPcap,然后在 ipxconfig 里选择"真实 IPX 封装"。它会通过网卡直接收发真实的 IPX 帧,但同样不支持 SPX。

五、进阶技巧:把联机体验再往上顶一档

跨网段联机:路由器端口转发

默认情况下 IPXWrapper 用 UDP 广播接收数据,广播无法穿过三层设备。跨网段联机时,在路由器上把UDP 端口 54792(IPXWrapper 的默认广播接收端口)转发到主机内网 IP,能明显改善连通性:

路由器品牌配置入口推荐规则
TP-Link转发规则 → 虚拟服务器协议 UDP,端口 54792 → 54792
ASUS高级设置 → 端口转发协议类型选 UDP
Netgear高级 → 端口转发外部端口填 54792

防火墙例外,两条路都行

  • 自动:在 ini 里写firewall exception = yes,程序启动时自动添加例外;
  • 手动:Windows Defender 防火墙 →"允许应用或功能通过防火墙",把游戏主程序和ipxconfig.exe都加进去,并勾选"专用"和"公用"。

网卡与系统体检清单

  1. 禁用所有不参与游戏的网卡,只留一条通路;
  2. 有线网卡属性里关掉 IPv6,让 IPv4 独占优先权;
  3. 关闭"QoS 数据包计划程序",减少排队开销;
  4. 两台机器都设固定 IP,避免 DHCP 续租导致地址漂移;
  5. 游戏期间切到"高性能"电源计划,关掉后台下载类程序。

日志三档位,排查看这里

ini 里的logging支持三档:

取值含义适用
none完全关闭日志日常游戏,零开销
debug调试级日志排查问题(会拖慢游戏)
trace全量 API 追踪终极分析(更慢)

排查时把日志开到trace,游戏跑一圈,然后打开游戏目录下的ipxwrapper.log,看数据包是否在发送、广播是否被转发。

六、高频问题速查(FAQ)

Q:支持哪些 Windows 版本?A:Windows 7 到 Windows 11 都可以,32 位和 64 位均覆盖,只需按位数选择对应的注册表文件。

Q:需要装驱动吗?A:不需要。默认 UDP 封装模式是纯软件方案;只有使用"真实 IPX 封装"时才需要额外安装 WinPcap。

Q:游戏本身要改代码或打补丁吗?A:完全不用。IPXWrapper 工作在系统 API 层面,游戏进程感知不到差异。

Q:最多支持几个人联机?A:协议层面没有硬性上限,实际受游戏自身设计和网络带宽约束,常见规模是 8~16 人。

Q:DOSBox 模式和真实 IPX 模式下为什么不能连 SPX?A:这两种模式走的是 UDP 数据报或原始帧通道,缺少 TCP 式的可靠流通道,SPX 的流式语义无处安放,属于设计取舍。

Q:怎么确认它真的在工作?A:进游戏创建主机,另一台机器能在大厅看到你,就算通了;或者开启trace日志,观察是否有收发记录。

七、写在最后:把当年的战友叫回来

回看开头的那个周五晚上——其实你离"联机成功"只差一层翻译:系统删掉了 IPX 这门方言,IPXWrapper 把它重新接了回来。从下载 4 个 DLL 到注册表双击、再到按本文方案选网卡、写配置,整套流程熟练后不到十分钟。它不改变游戏本身,不装驱动,不碰系统文件,却能让《星际争霸》《红警2》《暗黑破坏神》这些老伙计在现代 Windows 上重新握手。

现在就去克隆项目、部署 DLL、打开 ipxconfig 选好网卡,然后给老友发一条消息:"今晚,老地方,开黑。"这一次,大厅里会看到彼此的名字。

【免费下载链接】ipxwrapper项目地址: https://gitcode.com/gh_mirrors/ip/ipxwrapper

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

← 返回列表