Java 套接字路径中的@是什么。例如:@/存储/我的袜子
套接字路径中的Java 套接字路径中的@是什么。例如:@/存储/我的袜子,java,android,sockets,Java,Android,Sockets,套接字路径中的@是什么 我正在使用LocalServerSocket()打开unix套接字 与其他套接字不同,我的套接字的前缀是@。此外,我还检查了/storage分区。我找不到在那里生成的套接字 我创建套接字的代码如下所示 LocalServerSocket lss = new LocalServerSocket("/storage/my_sock"); LocalSocket sock = lss.accept(); InputStream ins = sock.getInputStream
@
是什么
我正在使用LocalServerSocket()
打开unix套接字
与其他套接字不同,我的套接字的前缀是@
。此外,我还检查了/storage
分区。我找不到在那里生成的套接字
我创建套接字的代码如下所示
LocalServerSocket lss = new LocalServerSocket("/storage/my_sock");
LocalSocket sock = lss.accept();
InputStream ins = sock.getInputStream();
我的想法是从Java打开一个本地服务器套接字,并使用作为与本机C应用程序交互的通信通道。但是由于路径无效,我无法实现这一点。@在unix套接字路径中表示它们是抽象套接字。在磁盘上看不到Abstract套接字。在android中,
LocalServerSocket()
创建抽象套接字
安卓:
本地人:
从本机应用程序中,为了打开相同的抽象套接字,请定义sun\u路径
,如下所示
sock.sun_family = AF_UNIX;
sock.sun_path[0] = '\0'
strcpy(&sock.sun_path[1], "my_sock");
sock_fd = socket(AF_UNIX, SOCK_STREAM, 0);
len_addr = offsetof(struct sockaddr_un, sun_path) + strlen("my_sock") + 1;
res = connect(sock_fd, (struct sockaddr *)&sock, len_addr);
请注意,
sun\u path
的第一个字节是'\0',实际名称从&sun\u path[1]
继续。通过遵循这个命名套接字的命名约定,系统识别我们想要在抽象套接字上操作,并为我们提供一个抽象套接字。@在unix套接字路径中,表示它们是抽象套接字。在磁盘上看不到Abstract套接字。在android中,LocalServerSocket()
创建抽象套接字
安卓:
本地人:
从本机应用程序中,为了打开相同的抽象套接字,请定义sun\u路径
,如下所示
sock.sun_family = AF_UNIX;
sock.sun_path[0] = '\0'
strcpy(&sock.sun_path[1], "my_sock");
sock_fd = socket(AF_UNIX, SOCK_STREAM, 0);
len_addr = offsetof(struct sockaddr_un, sun_path) + strlen("my_sock") + 1;
res = connect(sock_fd, (struct sockaddr *)&sock, len_addr);
请注意,
sun\u path
的第一个字节是'\0',实际名称从&sun\u path[1]
继续。通过遵循这个命名套接字的命名约定,系统识别出我们想要在抽象套接字上操作,并为我们提供一个抽象套接字。什么样的分区是/存储?它是一个外部设备还是什么?@Am_I_它是Android系统中的一个tmpfs分区。@chrylis非常感谢。。我现在明白了。但是我想知道有没有办法绕过它,创建一个普通的套接字,或者我是否可以使用这个来自我母语的抽象套接字application@chrylis如果sun_路径中的第一个字节为“\0”,则套接字被视为抽象套接字。我试试看。非常感谢你。你共享的链接真的很有帮助。/存储是什么类型的分区?它是一个外部设备还是什么?@Am_I_它是Android系统中的一个tmpfs分区。@chrylis非常感谢。。我现在明白了。但是我想知道有没有办法绕过它,创建一个普通的套接字,或者我是否可以使用这个来自我母语的抽象套接字application@chrylis如果sun_路径中的第一个字节为“\0”,则套接字被视为抽象套接字。我试试看。非常感谢你。你分享的链接真的很有帮助。。
sock.sun_family = AF_UNIX;
sock.sun_path[0] = '\0'
strcpy(&sock.sun_path[1], "my_sock");
sock_fd = socket(AF_UNIX, SOCK_STREAM, 0);
len_addr = offsetof(struct sockaddr_un, sun_path) + strlen("my_sock") + 1;
res = connect(sock_fd, (struct sockaddr *)&sock, len_addr);