用C+在Android下监听socket+;应用程序 我需要创建一个C++平台控制台应用程序,它运行在Android 5(根)下的非特权用户下。此应用程序侦听某些套接字端口并接受连接。它是通过boost::asio实现的。当应用程序以根用户身份运行时,一切正常。当它以普通用户身份运行时,当应用程序试图打开acceptor时会崩溃: const boost::asio::ip::tcp::endpoint endpoint(boost::asio::ip::address::from_string("127.0.0.1"), 3784); boost::asio::ip::tcp::acceptor acceptor(ioService); acceptor.open(endpoint.protocol()); // Here it throws an exception

用C+在Android下监听socket+;应用程序 我需要创建一个C++平台控制台应用程序,它运行在Android 5(根)下的非特权用户下。此应用程序侦听某些套接字端口并接受连接。它是通过boost::asio实现的。当应用程序以根用户身份运行时,一切正常。当它以普通用户身份运行时,当应用程序试图打开acceptor时会崩溃: const boost::asio::ip::tcp::endpoint endpoint(boost::asio::ip::address::from_string("127.0.0.1"), 3784); boost::asio::ip::tcp::acceptor acceptor(ioService); acceptor.open(endpoint.protocol()); // Here it throws an exception,android,c++,sockets,boost-asio,Android,C++,Sockets,Boost Asio,例外情况有点令人困惑,但可能意味着我没有触摸插座的访问权限: terminate called after throwing an instance of 'boost::exception_detail::clone_impl<boost::exception_detail::error_info_injector<boost::system::system_error> >' what(): open: Permission denied Aborted term

例外情况有点令人困惑,但可能意味着我没有触摸插座的访问权限:

terminate called after throwing an instance of 'boost::exception_detail::clone_impl<boost::exception_detail::error_info_injector<boost::system::system_error> >'
what():  open: Permission denied
Aborted
terminate在抛出“boost::exception\u detail::clone\u impl”的实例后调用
what():打开:权限被拒绝
流产
我试图在user
shell
和user
media
下运行应用程序。我还尝试在用户
u0\u a83
下运行它,该用户在我的设备上分配给
ProxyDroid

我更改了
/system/etc/permissions/platform.xml
——我将权限
android.permission.INTERNET
分配给了用户
shell
媒体
。我还尝试将群组媒体添加到android.permission.INTERNET,但没有任何效果


BTW.这是一个特殊的情况,当我真的需要在C++中实现应用程序在Android下运行时。在我的项目中,Java实现是不可接受的。

似乎最好的解决方案是使用Android中预定义的用户,并与系统上可用的功能相对应:。在我的情况下,我可以在用户inet(3003)下运行该应用程序,该应用程序可以创建套接字。

你有在Android上工作的boost吗?为什么不能使用Java?这听起来是一个相当大的挑战!这个答案可能有用: