Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/151.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;linux bluetooth sdp_connect仅使用root权限成功_C++_Linux_Bluetooth_Sdp - Fatal编程技术网

C++ C++;linux bluetooth sdp_connect仅使用root权限成功

C++ C++;linux bluetooth sdp_connect仅使用root权限成功,c++,linux,bluetooth,sdp,C++,Linux,Bluetooth,Sdp,我正在尝试在Linux上运行蓝牙服务器程序 为了让我的客户端设备找到服务器,我需要在sdp上注册我的服务配置文件 我的代码基本上与上面的代码相似 问题是我需要获得root权限才能使sdp\u connect成功 作为普通用户运行时,sdp\u connect始终返回NULL 因为我的代码的另一部分需要一个正常的用户(而不是root)环境,我想知道我是否可以使sdp\u connect和下面的sdp\u record\u register在没有root访问的情况下成功 更新 刚刚找到了一个可能的解

我正在尝试在Linux上运行蓝牙服务器程序
为了让我的客户端设备找到服务器,我需要在sdp上注册我的服务配置文件
我的代码基本上与上面的代码相似

问题是我需要获得root权限才能使
sdp\u connect
成功
作为普通用户运行时,
sdp\u connect
始终返回
NULL

因为我的代码的另一部分需要一个正常的用户(而不是root)环境,我想知道我是否可以使
sdp\u connect
和下面的
sdp\u record\u register
在没有root访问的情况下成功

更新 刚刚找到了一个可能的解决方案
我使用的是Bluez5和
sdp_connect
似乎是不推荐使用的Bluez4功能,因此我需要在兼容模式下运行该服务
现在它可以工作了,它允许所有人访问
/var/run/sdp

只是不确定是否可以安全地永久访问

正如您正确指出的那样,共有8个工具,因为它们不再维护或已被其他工具替换

使用
--compat
运行似乎是一个快速解决方案,而不是一个长期解决方案

支持的API是针对系统级功能的API

应用程序层通过D-Bus访问,并分布在中的多个文档中

、和是一些常见的选项,具体取决于您尝试执行的操作

查看
bluetoothctl
可以给出一些如何将这些API与C结合使用的示例

test目录中有更多示例,但它们是Python中的:


您能提供一份详细的报告吗?这将有助于理解。在你发布的页面中有很多代码,“没有根访问权限”,可能不会,否则你的系统将面临超级简单的黑客攻击。不清楚你在哪里做这件事。在cmd行中,您可以执行
sudu/path/to/my/bluetoothServer
操作来授予您临时根权限(ish)?祝你好运@Pipetus第4.4.2节和第4.4.3节中的代码已经是最简单的形式。基本上,它所做的是建立一个蓝牙rfcomm配置文件,连接到sdp并注册。谢谢ukBaz。D-Bus应该是正确的选择。我将进一步了解新的API。