自學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客戶端也能正常通信。
uj5u.com熱心網友回復:
個人感覺應該是selinux權限問題,由于初學,還未找到解決辦法。uj5u.com熱心網友回復:
connect(localsocket, (struct sockaddr *) &remote, len)是不是需要這樣sizeof(len)?
uj5u.com熱心網友回復:
socket(AF_UNIX, SOCK_STREAM, 0)這樣socket(AF_INET, SOCK_STREAM, 0)?
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/270188.html
標籤:Android
上一篇:吐司自定義來個大佬,幫忙下。
