udp - 一台机器上的两个客户端之间的 UDP 打孔
问题描述
我使用以下方法进行UDP 打孔:我有一个大厅服务器 L,以及一个(共享)NAT 后面的两个客户端 A 和 B。
现在,A 和 B 在同一台机器上运行。它们都向服务器 L 发送数据报。
服务器 L 告诉 A 和 B 对方的 IP+PORT。请注意,服务器看到的 A 和 B 的 IP 相同,但端口不同,正如预期的那样。
然后 A 和 B 使用服务器提供的 addr+port 相互发送数据报。
然而,他们彼此之间的数据报永远不会到达。
我的问题:如果两个客户端都在同一台机器上,UDP 打孔是否有效?如果他们只是在同一个局域网上,在同一个 NAT 后面怎么办?
注意:我试图降低路由器的严格性,但不幸的是, Archer C7似乎没有选择锥形/对称/不对称。我确实关闭了状态数据包检查。
更新:当我尝试发送打孔数据报时,我确实看到这是通过网络设备发送的:
ICMP dest unrch (port)
更新: stunclient 输出:
$ stunclient --mode full stun.stunprotocol.org
Binding test: success
Local address: 10.0.1.2:49703
Mapped address: 209.161.250.218:49703
Behavior test: success
Nat behavior: Endpoint Independent Mapping
Filtering test: success
Nat filtering: Address and Port Dependent Filtering
解决方案
推荐阅读
- php - 不同年份日期之间的PhP月份差异
- javascript - 如何使用 ajax 将多个返回值传递给 laravel 控制器
- reactjs - Reactstrap 中的 Col
- ios - Swift:使用`var`会导致编译器警告,使用`let`会导致编译器错误?
- javascript - 悬停时播放声音
- angular - 函数更新与 [(ngModel)] 绑定的数组中的所有对象
- node.js - 如何从发布请求中检索数据
- php - Laravel 登录时重定向到不同的 URL
- android-studio - 当 minifyEnabled 为 true 时,Android Studio 构建卡住
- java - 插入 Google 日历的预定 WebScraper