【发布时间】:2014-11-25 04:17:10
【问题描述】:
我正在开发一个 Android 本机可执行服务,该服务在系统启动时由 init 启动(我在 init.rc 中注册)。这个本机可执行文件创建一个侦听 0.0.0.0:4615 的套接字,并且应该接受来自外部的连接。
操作系统是 Android K;它在具有以太网接口的开发套件上运行,可将其插入局域网。
我已经完成了在 adb shell 中以 root 身份运行相同本机可执行文件的测试。它工作正常 - 我的 Windows 机器上的外部套接字客户端可以连接到本机可执行文件并成功发送/接收消息。当我通过 init 启动它时,它成功侦听了 0.0.0.0:4615,但外部套接字客户端无法连接到它 - 连接被拒绝。
我在init.rc中添加的sn-p是:
service msger-daemon /system/bin/msgerd
class main
“ps”查看msgerd的用户时,发现是root。
请帮忙,谢谢!
【问题讨论】:
-
无论连接类型如何,C POSIX 套接字都不应该工作吗?
-
在手机上安装监听服务可能会有问题,因为如果它不在 WIFI 网络上,您将不会事先知道它将获得什么地址,或者电话公司将允许通过以下方式连接到任意端口他们的网络。
-
不是在手机上,我正在开发支持以太网的开发套件(板)。并且在 adb shell 中运行与 root 相同的可执行文件的测试通过了。我想知道在由 init 启动时如何让它工作。
-
也许您可以发布有关该服务的 init.rc 脚本。
-
我在init.rc中添加的sn-p现在有问题了。
标签: android c++ sockets android-service android-framework