【问题标题】:What path can I use with boost::asio::local::stream_protocol on Android?我可以在 Android 上与 boost::asio::local::stream_protocol 一起使用什么路径?
【发布时间】:2015-12-09 14:40:28
【问题描述】:

我正在尝试通过 boost 的 Unix 域套接字包装器在 Android 上打开一个本地套接字。

我似乎找不到接受器工作的路径。

using boost::asio::local::stream_protocol;

void test()
{
   boost::asio::io_service io;
   stream_protocol::endpoint ep("/dev/shm/BlahBLah");
   stream_protocol::acceptor(io, ep);
}

我从 sock bind() 得到一个异常,错误代码为:2 (ENOENT)

那么,为什么 boost stream_protocol 不能通过那个目录连接呢? (手动我可以打开一个套接字并将其绑定到该路径)

我需要以某种方式设置权限吗?或者是否有不同的路径可以工作(不是通过 SD 卡,我需要一个虚拟路径)

【问题讨论】:

    标签: android sockets boost boost-asio bind


    【解决方案1】:

    首先使用共享内存设备似乎很有趣。

    UNIX 域套接字与它无关。我相信 Android 内核不支持共享内存。

    我认为您应该能够使用程序可访问和可写的任何目录。

    “我需要虚拟路径”是什么意思?我想您的意思是您希望套接字不可见¹?应该为此使用 Posix 权限或 acls。

    最后,看看socketpair - IIRC - 为 IPC 创建未命名的套接字


    ¹ /proc、lsof 和类似的可能仍然可以看到它。不要以套接字的名义暴露秘密,并使用权限保护它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-02
      • 1970-01-01
      • 2012-10-01
      • 2018-08-28
      • 1970-01-01
      • 2023-04-07
      • 2021-05-06
      相关资源
      最近更新 更多