Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android(本机):为什么我的套接字不是';不适用于其他流程?_Android_Security_Sockets_Android Ndk_Ipc - Fatal编程技术网

Android(本机):为什么我的套接字不是';不适用于其他流程?

Android(本机):为什么我的套接字不是';不适用于其他流程?,android,security,sockets,android-ndk,ipc,Android,Security,Sockets,Android Ndk,Ipc,因此,我将通过init.rc启动一个自定义本机守护进程。 它尝试这样做: x_con = android_get_control_socket("test"); int ret = listen(x_con, 1); int new_s = accept(x_con, (struct sockaddr*)&peeraddr, &socklen); 或者这个: x_con = socket_local_server("test:, ANDROID_SOCKET_NAMESPACE

因此,我将通过init.rc启动一个自定义本机守护进程。 它尝试这样做:

x_con = android_get_control_socket("test");
int ret = listen(x_con, 1);
int new_s = accept(x_con, (struct sockaddr*)&peeraddr, &socklen);
或者这个:

x_con = socket_local_server("test:, ANDROID_SOCKET_NAMESPACE_RESERVED, SOCK_STREAM );
int new_s = accept(x_con, (struct sockaddr*)&peeraddr, &socklen);
在这两种情况下,我都可以在
/dev/socket
下看到套接字,它的访问掩码为0666(由于在
init.rc
中设置了参数),但仍然无法接受任何连接(似乎对其他进程不可用)


这是因为“偏执网络”Android的功能吗?

与“普通”套接字相比,Android套接字模型似乎非常奇怪

首先,必须通过init.rc初始化套接字,并授予一定的权限

接下来,服务器应用程序将通过以下方式打开它:

x_con = android_get_control_socket("test");
接下来,需要listen()和fnctl()调用:

listen(x_con, 1);
fcntl(x_con, F_SETFD, FD_CLOEXEC);
之后,来自Java的LocalSocket连接可以访问socket,socket可以接受客户端

也允许稍后设置非阻塞模式:

fnctl(x_con, F_SETFL, O_NONBLOCK);

其他组合是不必要的(还有一些指南,比如在Android中使用无线层接口(RIL)——不会链接到低级手册——指出socket_local_server和Android_get_control_socket都是必需的,这显然是不真实的).

我的一些实验仍然不清楚访问权限-套接字有时使用错误的权限创建。