看RIL的代码,看到一个类似android_get_control_socket("rild")的函数调用,追踪一下android自己的socket实现,发现就是从添加了ANDROID_SOCKET_的前缀,获取系统环境中ANDROID_SOCKET_rild变量的值并返回,这个值就是所要获取的socket的文件描述符(希望没有理解错)。上网搜了一下有讲是在系统初始化时根据init.rc脚本给rild这个服务创建的。init.rc中相关脚本如下:
service ril-daemon /system/bin/rild
socket rild stream 660 root radio
socket rild-debug stream 660 radio system我很想知道socket rild stream 660这句脚本是怎么实现的(这个socket怎么创建),如果我想对这个socket创建一个客户端。该怎么获得socket的地址。(网上只有JAVA的获取方式,我想用c++写)。。android新人。。求高手指个方向。。谢谢!
service ril-daemon /system/bin/rild
socket rild stream 660 root radio
socket rild-debug stream 660 radio system我很想知道socket rild stream 660这句脚本是怎么实现的(这个socket怎么创建),如果我想对这个socket创建一个客户端。该怎么获得socket的地址。(网上只有JAVA的获取方式,我想用c++写)。。android新人。。求高手指个方向。。谢谢!
获取服务端 android_get_control_socket(HDMI_SOCKET_NAME)
获取客户端
fd = socket_local_client(HDMI_SOCKET_NAME,
ANDROID_SOCKET_NAMESPACE_RESERVED,
SOCK_STREAM );
对于socket rild stream 660 root radio,init进程会根据“socket”这个类型从而调用publish_socket(),更细节的LZ可以自己分析一下。