Android 本机可执行文件如何接受外部套接字连接
How an Android native executable accept external socket connections?
我正在开发一个Android本机可执行服务,该服务在系统启动时由init启动(我在init.rc中注册)。此本机可执行文件创建一个侦听 0.0.0.0:4615 的套接字,并且应该接受来自外部的连接。
操作系统是Android K;它运行在具有以太网接口的开发套件上,用于将其插入局域网。
我已经完成了在 adb shell 中运行与 root 相同的本机可执行文件的测试。它工作正常 - 我的 Windows 机器上的外部套接字客户端可以连接到本机可执行文件并成功发送/接收消息。当我通过 init 启动它时,它成功侦听 0.0.0.0:4615,但外部套接字客户端无法连接到它 - 连接被拒绝。
我在 init.rc 中添加的代码片段是:
service msger-daemon /system/bin/msgerd
class main
当"ps"检查msgerd的用户时,我们发现它是root。
请帮忙,谢谢!
通过在 $TOP/external/sepolicy 下添加 SE 策略文件来解决,该文件的内容为:
# File types must be defined for file_contexts.
type msgerd, domain;
type msgerd_exec, exec_type, file_type;
init_daemon_domain(msgerd)
permissive msgerd;
# Add msgerd to various domains
net_domain(msgerd)
allow msgerd self:capability { net_admin net_raw };
如果有人想审查和建议,欢迎!
相关文章:
- 当套接字连接断开时检测C/C++Unix
- 通过套接字[TCP]传输数据 如何在C / C ++中打包多个整数并使用send() recv()传输数据
- 如何通过套接字将文本文件的内容从服务器发送到客户端
- 如何在C/C++中用FD_set Unix设置套接字文件描述符
- 套接字读取后,我在缓冲区中看到意外输入
- 如何在CPP中创建应该在Windows和Linux上运行的套接字?
- 我可以与 python 服务器而不是 c++ 客户端建立 tcp/ip 套接字吗?
- 套接字连接"Operation not permitted"错误,甚至使用升压/平发器根.cpp
- WINAPI 注册应用程序重新启动时不清除打开的套接字
- (Winsock) UDP 接收工作正常,但同一套接字的发送失败
- MSG_WAITALL的套接字发送得到了 22 EINVAL
- C++套接字客户端到 Python 服务器未创建连接
- 在不知道套接字的情况下关闭网络连接
- C++套接字对不读/写父/子
- 非更新套接字消息
- SIGSEGV on Boost UDP 套接字关闭 - tcache_get at malloc.c.
- 将"uint8_t"(从套接字读取)隐式转换为"char"安全吗
- Android 本机可执行文件如何接受外部套接字连接
- 无法从外部本地网络连接到 C++ Linux 套接字程序
- 带有外部和内部IP地址的套接字