HarmonyOS 鸿蒙Next socket udp无法发送广播

发布于 1周前 作者 eggper 来自 鸿蒙OS

HarmonyOS 鸿蒙Next socket udp无法发送广播 在尝试使用socket开发udp程序时出现报错,经过排查,该api无法发送广播,代码及日志如下,求大佬指导,是我代码姿势有问题吗?

cke_1832.png

cke_3372.png

另外,看隔壁大佬学习的本地ip地址获取姿势为什么在我的手机上无法获取,获取到是0。

cke_18086.png

顺便吐槽一句,为什么这个udp的socket还要先调用bind绑定一下本地地址?(不然会报socket operation on non-socket)习惯了python直接调用sendto,感觉与直觉不相符,如果有可能的话建议官方大佬改改orz。


更多关于HarmonyOS 鸿蒙Next socket udp无法发送广播的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

9 回复

await udpSocket.setExtraOptions({ broadcast: true })

next上配置下broadcast为true就行了

更多关于HarmonyOS 鸿蒙Next socket udp无法发送广播的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


你好解决了吗? 

没解决,后面这个地方搁置了,请问您也遇到相同情况了吗

HarmonyOS的分布式文件系统让我在多设备间共享文件变得更加方便。

broadcast: true配置一下,就不会提示这个错误了,但是我的广播显示发送出去了,但是实际可能没有我怀疑不会回复,

代码里地址设置为192.168.43.1时,代码能正常执行,但设为192.168.43.255时就会报错,大佬这是啥情况orz,

发现代码好像没发出来

let udp: socket.UDPSocket = socket.constructUDPSocketInstance();
//本地IP的数值形式
let ipNum = wifiManager.getIpInfo().ipAddress;
//本地IP的字符串形式
let localIp = (ipNum >>> 24) + '.' + (ipNum >> 16 & 0xFF) + '.' + (ipNum >> 8 & 0xFF) + '.' + (ipNum & 0xFF);
console.log(`localIP: ${ipNum}, ${localIp}`);
udp.bind({ address: '0.0.0.0' }).then(() => {
  console.log('bind success');
}).catch((err: Object) => {
  console.error('bind fail: ' + JSON.stringify(err));
});
udp.send(sendOpt).then(() => {
  console.log('send success', addr.address);
}).catch((err: Object) => {
  console.error('send fail: ', addr.address, JSON.stringify(err));
});

针对HarmonyOS(鸿蒙)系统中Next socket UDP无法发送广播的问题,可能的原因及解决方法如下:

在鸿蒙系统中,UDP广播的发送通常依赖于网络配置和权限设置。首先,确保你的应用已获得必要的网络权限,这包括访问网络的权限和可能需要的特定广播权限(尽管鸿蒙系统对权限的管理可能不同于Android,但检查权限始终是第一步)。

其次,检查UDP广播发送的代码实现。确保你正确地设置了广播地址(通常是255.255.255.255)和端口号。同时,验证数据包格式和内容是否符合网络协议要求。

此外,鸿蒙系统的网络栈可能对广播的处理有特定限制或行为。例如,某些情况下,系统可能默认阻止应用发送UDP广播。你可以查阅鸿蒙系统的官方文档或开发者指南,了解是否有相关的系统配置或API调用可以调整这一行为。

如果以上步骤均未能解决问题,可能需要深入检查系统的网络配置或考虑是否存在系统级别的bug。在这种情况下,建议直接联系鸿蒙系统的技术支持团队或访问官方论坛寻求帮助。

如果问题依旧没法解决请联系官网客服, 官网地址是:https://www.itying.com/category-93-b0.html

回到顶部