HarmonyOS 鸿蒙Next UDP socket bind会失败

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

HarmonyOS 鸿蒙Next UDP socket bind会失败

前一天还能bind成功,但是今天就不行了 一直报错Address not available. 不知道是什么原因引起的 [socket_exec.cpp 992] bind failed, socket:64, errno:99  2303199 不能分配请求的地址 错误信息  Address not available.  错误描述  请求的地址在其上下文中无效。  可能原因  当远程地址或端口对远程计算机无效时,可能发生该问题。  处理步骤  检查地址或端口是否正确。


更多关于HarmonyOS 鸿蒙Next UDP socket bind会失败的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复
socket的bind函数入参地址是本机IP,本机获取IP参考:
深色代码主题
复制
let localAddress = resolveIP(wifiManager.getIpInfo().ipAddress);

export function resolveIP(ip: number): string { if (ip < 0 || ip > 0xFFFFFFFF) { throw (‘The number is not normal!’); } return (ip >>> 24) + ‘.’ + (ip >> 16 & 0xFF) + ‘.’ + (ip >> 8 & 0xFF) + ‘.’ + (ip & 0xFF); }

export function checkIp(ip: string): boolean { let ipRegex = /^((2[0-4]\d|25[0-5]|[01]?\d\d?).){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)$/; return ipRegex.test(ip); }

从官方文档来看,很多方法都是需要bind一下的,只有bind成功才可以调用,所以不能不填,不可以随便写,bind只能填本机IP

更多关于HarmonyOS 鸿蒙Next UDP socket bind会失败的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next系统中,UDP socket bind失败可能由以下几个原因引起:

  1. 端口已被占用:尝试绑定的端口已被其他应用程序占用。确保所选端口未被其他进程使用。

  2. 地址不可用:指定的IP地址不属于本机或不允许绑定。检查IP地址是否正确,以及是否为本机地址或合法地址。

  3. 权限不足:应用程序可能没有足够的权限绑定到特定的网络地址或端口。检查应用权限设置,确保有足够的网络访问权限。

  4. 系统配置限制:某些系统配置可能限制了可绑定的端口范围或IP地址。检查系统网络配置,确认无相关限制。

  5. socket未正确创建:在尝试bind之前,确保socket已正确创建且处于可用状态。

  6. 系统资源不足:系统资源紧张,如文件描述符耗尽,可能导致socket操作失败。检查系统资源使用情况。

  7. 网络栈问题:底层网络栈可能存在bug或异常,导致socket操作失败。这种情况较为罕见,但不排除可能性。

针对上述问题,逐一排查并修正。如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html。

回到顶部