HarmonyOS 鸿蒙Next:native侧创建socket失败,返回值-1,errno=1,失败描述为Operation not permitted.
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,应用是否需要添加额外权限申请说明呢?
返回值为-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)通常指示权限问题或安全策略限制。请检查以下几点:
- 确保应用具有创建socket的权限,在HarmonyOS中可能需要特定的权限声明。
- 查看应用是否运行在受限的环境中(如某些安全沙箱或容器),这些环境可能限制网络访问。
- 验证应用是否遵循了HarmonyOS的安全模型,如网络访问的隔离策略。
如果问题依旧没法解决请加我微信,我的微信是itying888。