请教下 war3 局域网远程联机问题

2023-05-22 11:15:38 +08:00
 edward1987

背景:和朋友最近复古打机,玩 war3 ,想各自在家的时候也能玩,查资料得知 war3 局域网是通过 udp:6112 + tcp:6112 两种交互完成

我有一台腾讯云的 vps 。

尝试 1:我的电脑 A,朋友电脑 B,朋友家有一台和 B 局域网的服务器 C 。

通过 vps+gost ,在 C 上开启本地端口( udp+tcp) 6112 并转发到 VPS 上,在我的电脑 A 上通过远程端口转发 ( rtcp 和 rudp ),将 VPS 上的请求转发到我本地 6112 上。

整体调用链是:B 开了房间,会全局广播 UDP ,C 收到广播,通过 VPS 转发到我本地 6112 端口。 但是 UDP 转发却失败了,每次广播我本地是有看到请求的,但是 C 上面一直报 i/o timeout 。我电脑上也看不到房间。方案一失败,不知道为何?

尝试 2: 组建 zerotier 内网,组建成功,设备都加入了同一个子网,也能 ping 的通,延时 30ms 。但是还是看不到房间,udp 的广播一点都没收到,我也不知道为啥😂

大佬们有啥好的方案嘛? 或者帮忙看看我的方案有啥问题,中年人打机不容易

3989 次点击
所在节点    程序员
50 条回复
vdrapb
2023-05-22 17:03:38 +08:00
@edward1987 我和我朋友一直都是用的 UP 对战平台。自己开图也没有等级限制
palxie
2023-05-22 17:06:23 +08:00
你们当年没用过 浩方 吗 😂
sanqian
2023-05-22 17:23:55 +08:00
UP 平台就好..就是上面的 RPG 图让人恶心
binyu
2023-05-22 18:01:21 +08:00
那么,古尔丹,代价是什么呢?
xuzheliang
2023-05-22 19:12:23 +08:00
我之前也做过联机,你没法连接的问题是因为 war3 对多网卡(或者说多网络适配器)的情况没有做好处理,导致 upd 的广播包发到了错误的网络上,进而不能联机。
举个例子,如果你同时有 wifi 和网线,那么 war3 可能只走网线或者只走 wifi (具体根据排名,war3 应该永远走第一个)。如果你的好友在另一个网络上,那就无法联机。
此外,如果你装的有 vmware 等虚拟机,就会安装上虚拟网络适配器,这时候 war3 甚至会只在这些虚拟网段上查找 peer ( zerotier 也会有虚拟网络适配器,甚至你有多个网络还会有多个)。
解决方案似乎只有禁用其他网络适配器,强迫 war3 用剩下的那个连接,具体用了哪一个,可以用 wireshark 抓包来查看。最后,记得关闭 windows 的防火墙,不然你会倒在黎明前的黑暗里。
py2ex
2023-05-22 21:48:32 +08:00
hamachi VPN 上面有人提到过
记得有人说过是通过收发局域网 UDP 包发现房间的
Meltdown
2023-05-23 00:22:57 +08:00
等废半天劲折腾好了还有心情玩吗,直接上平台
c3de3f21
2023-05-23 11:15:07 +08:00
@lesismal 欸,这个好,这个好
LinePro
2023-05-23 12:45:56 +08:00
@xuzheliang #45
有关你提的这个问题,可以查看我在 #31 的回复。
关键就是广播包在路由表里的优先级,调整跃点数即可,不必禁用网卡。
此外防火墙也不必完全禁用,设置相关程序允许入站即可。
xuzheliang
2023-05-23 20:57:07 +08:00
@LinePro 受教了,我之前认为是按照某个 API 的返回值取第一个适配器,这样看来,可能是对 0.0.0.0:xx (端口)这种写法的默认表现

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/941856

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX