使用localsocket作为进程间的通信问题

Jneu 2021-03-30 07:31:02
自学Android ndk开发不久,使用localsocket作为进程间的通信方式
写了一个java的服务器端,目前正常工作。
写了一个c的jni接口的客户端,打包成apk发布,也能正常通信。
但是同样的代码用ndk-build直接编译成native app,就出错了,提示localsocket connect error。请问大家有什么好的建议吗?
int localsocket_client_init(const char *server_name)
{
int len;
struct sockaddr_un remote;

localsocket = socket(AF_UNIX, SOCK_STREAM, 0);
if (localsocket == -1)
{
MCINFO("localsocket init error \n");
return EXIT_FAILURE;
}

remote.sun_path[0] = '\0'; /* abstract namespace */
strcpy(remote.sun_path + 1, server_name);
remote.sun_family = AF_UNIX;
int nameLen = strlen(server_name);
len = 1 + nameLen + offsetof(struct sockaddr_un, sun_path);

if (connect(localsocket, (struct sockaddr *) &remote, len) == -1)
{
MCINFO("localsocket connect error \n");
return EXIT_FAILURE;
}

return EXIT_SUCCESS;
}
在在ndk下又用c写了一个服务端,和之前的c客户端也能正常通信。
...全文
1816 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
Jneu 2021-04-19
  • 打赏
  • 举报
回复
期待高手
Jneu 2021-04-06
  • 打赏
  • 举报
回复
不会写代码的猴子 版主 2021-04-02
  • 打赏
  • 举报
回复
引用 8 楼 Jneu 的回复:
现在的手机没有root权限,能修改init.rc文件吗?
不能,现在很难root了哇
Jneu 2021-04-02
  • 打赏
  • 举报
回复
现在的手机没有root权限,能修改init.rc文件吗?
Jneu 2021-03-31
  • 打赏
  • 举报
回复
代码应该没有问题,同样的代码,用c写的native 客户端和服务端能正常通信, java写的服务器端和使用c的jni接口的客户端,打包成apk发布,也能正常通信 就是native app和java apk之前通信,查log提示avc denied。
不会写代码的猴子 版主 2021-03-31
  • 打赏
  • 举报
回复
https://my.oschina.net/chenshouyong/blog/97534
Jneu 2021-03-31
  • 打赏
  • 举报
回复
有高手能解决这个问题吗?或者提供其他的方案实现native app和java apk之间通信。
不会写代码的猴子 版主 2021-03-31
  • 打赏
  • 举报
回复
那估计只能在应用层建立连接了
不会写代码的猴子 版主 2021-03-30
  • 打赏
  • 举报
回复
socket(AF_UNIX, SOCK_STREAM, 0) 这样socket(AF_INET, SOCK_STREAM, 0)?
不会写代码的猴子 版主 2021-03-30
  • 打赏
  • 举报
回复
connect(localsocket, (struct sockaddr *) &remote, len) 是不是需要这样sizeof(len)?
Jneu 2021-03-30
  • 打赏
  • 举报
回复
个人感觉应该是selinux权限问题,由于初学,还未找到解决办法。

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧