Android本机可执行文件如何接受外部套接字连接?
我正在开发一个Android本机可执行服务,当系统启动时由init启动(我在init.rc中注册它)。此本机可执行文件创建一个套接字,侦听0.0.0.0:4615,并接受来自外部的连接 操作系统是安卓K;它运行在一个开发工具包上,该工具包具有以太网接口,可将其插入局域网 我已经完成了测试,在adb shell中运行与root相同的本机可执行文件。它工作正常-我的Windows计算机上的外部套接字客户端可以连接到本机可执行文件并成功发送/recv消息。当我用init启动它时,它成功地侦听0.0.0.0:4615,但外部套接字客户端无法连接到它-连接被拒绝Android本机可执行文件如何接受外部套接字连接?,android,c++,sockets,android-service,android-framework,Android,C++,Sockets,Android Service,Android Framework,我正在开发一个Android本机可执行服务,当系统启动时由init启动(我在init.rc中注册它)。此本机可执行文件创建一个套接字,侦听0.0.0.0:4615,并接受来自外部的连接 操作系统是安卓K;它运行在一个开发工具包上,该工具包具有以太网接口,可将其插入局域网 我已经完成了测试,在adb shell中运行与root相同的本机可执行文件。它工作正常-我的Windows计算机上的外部套接字客户端可以连接到本机可执行文件并成功发送/recv消息。当我用init启动它时,它成功地侦听0.0.0
我在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 POSIX套接字都应该工作吗?在手机上提供监听服务可能会有问题,因为如果它不在WIFI网络上,您将事先不知道它将获得什么地址,或者手机公司将允许通过其网络连接到任意端口。不是在手机上,我正在开发一个支持以太网的开发工具包(一块板)。测试在adb shell中运行与root通过相同的可执行文件。我想知道当由init启动时它是如何工作的。也许你可以发布关于该服务的init.rc脚本。我在init.rc中添加的代码片段现在有问题了。