我的目标是从SmartWatch(运行wear os 2(向同一网络上的Arduino发送UDP消息(小于100字节(。只要SmartWatch保持连接到wifi(手表的ip地址:145.167.189.23(,这就很好。但当我打开蓝牙时,智能手表会禁用wifi,并通过连接蓝牙的手机切换到互联网连接。SmartWatch从移动设备获取互联网连接子网中的ip地址(如果移动设备的ip地址为145.167.189.105,则会获得145.167.177.4(。TCP请求(如"stackoverflow.com"(运行良好。
如果我现在尝试发送UDP消息,Arduino将不会收到任何消息。我已经尝试将UDP消息发送到255.255.255.255145.255.255.255145.167.255.255.145.167.189.255,但Arduino从未收到任何消息(Wireshark验证(。六年多前也出现了同样的问题(简单UDP广播在Android Wear上不起作用(,当时Wear os 2还不可用。唯一提出的解决方案是"磨损数据层"。我也已经尝试过了,但观察到了非常大的延迟(大约3秒(。因此,这些对我来说根本不是一个解决方案。
wear os上的网络访问文档只显示
您可以使用HTTP、TCP和UDP 等协议
也许有人可以告诉我为什么UDP消息没有从手机转发。
只有DNS udp包才能转发到手机。
- 它设置了一些iptable规则来将udp包转发到TPROXY。查看以下规则(iptables-t mangle-L(。它不会将udp数据包转发到保留的IP地址
Chain oem_CW_PROXY_UDP (22 references)
target prot opt source destination
RETURN all -- anywhere 0.0.0.0/8
RETURN all -- anywhere loaclhost/8
RETURN all -- anywhere 100.64.0.0/10
RETURN all -- anywhere 127.0.0.0/8
RETURN all -- anywhere 169.254.0.0/16
RETURN all -- anywhere 172.16.0.0/12
RETURN all -- anywhere 192.0.0.0/29
RETURN all -- anywhere 192.0.2.0/24
RETURN all -- anywhere 192.168.0.0/16
RETURN all -- anywhere 198.18.0.0/15
RETURN all -- anywhere 198.51.100.0/24
RETURN all -- anywhere 203.0.113.0/24
RETURN all -- anywhere 224.0.0.0/4
RETURN all -- anywhere 240.0.0.0/4
RETURN all -- anywhere 255.255.255.255
TPROXY udp -- anywhere anywhere TPROXY redirect 0.0.0.0:35070 mark 0x1/0x1
- TPROXY将通过蓝牙插座将收到的udp封装转发到手机。但它只适用于woard DNS包,这可以从手表的日志中看到。看起来Wear操作系统在某个时候决定只支持两个DNS包
05-20 12:20:31.269806 1263 5866 D HOME : [ClockworkProxyUdp]Got packet with 47 bytes, from: /192.168.167.239:36215 original dst: /8.8.8.8:53
05-20 12:21:05.264492 1263 5866 D HOME : [ClockworkProxyUdp]Got packet with 47 bytes, from: /192.168.167.239:63348 original dst: /8.8.8.8:53
05-20 12:21:05.272685 1263 5866 D HOME : [ClockworkProxyUdp]Got packet with 32 bytes, from: /192.168.167.239:34219 original dst: /8.8.8.8:53
05-20 12:21:38.282089 1263 5866 D HOME : [ClockworkProxyUdp]Got packet with 47 bytes, from: /192.168.167.239:54529 original dst: /8.8.8.8:53
05-20 12:21:38.287255 1263 5866 D HOME : [ClockworkProxyUdp]Got packet with 32 bytes, from: /192.168.167.239:58688 original dst: /8.8.8.8:53