看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新人。。求高手指个方向。。谢谢!

解决方案 »

  1.   

    socket rild stream 660  这个估计是汇编语言了
      

  2.   

    呵呵,楼上真逗
    获取服务端 android_get_control_socket(HDMI_SOCKET_NAME)
    获取客户端
    fd = socket_local_client(HDMI_SOCKET_NAME,
                                ANDROID_SOCKET_NAMESPACE_RESERVED,
                                SOCK_STREAM );
      

  3.   

    init.rc是由init进程解析的,所以分析一下/system/core/init.c就会知道怎么回事了。
    对于socket rild stream 660 root radio,init进程会根据“socket”这个类型从而调用publish_socket(),更细节的LZ可以自己分析一下。
      

  4.   

    奇怪为什么不是socket_local_server++++socket_local_client配对使用???