HarmonyOS 鸿蒙Next:native侧创建socket失败,返回值-1,errno=1,失败描述为Operation not permitted.

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

HarmonyOS 鸿蒙Next:native侧创建socket失败,返回值-1,errno=1,失败描述为Operation not permitted.

我创建了一个native c++应用。在Harmonyos 设备上调试。

deveco版本为:DevEco Studio NEXT Developer Beta1

Build #DS-233.14475.28.36.503403

Build Version: 5.0.3.403, built on June 20, 2024

Runtime version: 17.0.10+1-b1087.17 amd64

VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o.

Windows 10.0

设备系统版本为:next beta 1。

sdk-package.json描述如下:

{

    “meta”: {

        “version”: “1.0.0”

    },

    “data”: {

        “apiVersion”: “12”,

        “displayName”: “HarmonyOS NEXT”,

        “path”: “HarmonyOS-NEXT”,

        “platformVersion”: “5.0.0”,

        “releaseType”: “Beta1”,

        “version”: “5.0.0.25”,

        “stage”: “Developer Beta1”

    }

}

在native侧。我使用

int nRet = socket(AF_INET, SOCK_STREAM, 0);创建一个套接字,但失败了。返回值为-1。根据错误描述,应该是权限问题。目前计划解决方法是通过调用系统api net_websocket来创建socket。但没有找到harmonyos 的full sdk。也不清楚怎么配置。虽然有openharmony的full sdk,但不清楚是否能使用openharmony的full sdk构建harmony os应用。感觉不太行。另外,如果使用harmony os系统api,应用是否需要添加额外权限申请说明呢?

2 回复

返回值为-1的报错已解决。通过在module.json5里添加以下字段:

"requestPermissions": [
{
"name": "ohos.permission.INTERNET"
},
{
"name": "ohos.permission.GET_NETWORK_INFO"
},
{
"name": "ohos.permission.SET_NETWORK_INFO"
},
]

就能解决。

在HarmonyOS中遇到native侧创建socket失败,errno=1(Operation not permitted)通常指示权限问题或安全策略限制。请检查以下几点:

  1. 确保应用具有创建socket的权限,在HarmonyOS中可能需要特定的权限声明。
  2. 查看应用是否运行在受限的环境中(如某些安全沙箱或容器),这些环境可能限制网络访问。
  3. 验证应用是否遵循了HarmonyOS的安全模型,如网络访问的隔离策略。

如果问题依旧没法解决请加我微信,我的微信是itying888。

回到顶部