Android(安卓)与 native C 利用本地socket进行消息传递
16lz
2022-07-25
Android 与 native C 利用本地socket进行消息传递
Java源码:
// 服务器端import java.io.BufferedReader;import java.io.InputStream;import java.io.InputStreamReader;import android.net.LocalServerSocket;import android.net.LocalSocket;import android.util.Log;public class SocketListener extends Thread {@Overridepublic void run() {Log.i(getClass().getName(), "run()");try {LocalServerSocket server = new LocalServerSocket("com.example.mysoftphone.localsocket");while (true) {LocalSocket receiver = server.accept();Log.i(getClass().getName(), "server.accept()");if (receiver != null) {InputStream input = receiver.getInputStream();InputStreamReader inputReader = new InputStreamReader(input);BufferedReader bufferReader = new BufferedReader(inputReader);String line = bufferReader.readLine();// String line1 = new String(line.getBytes("UTF-8"));Log.i(getClass().getName(), line);}}} catch (Exception e) {Log.e(getClass().getName(), e.getMessage());} finally {}}}
C代码:
// 客户端#include #include #include #include #include #include #include #define THIS_FILE "ipc_client.c"int send_remote_request(char *msg, int size){int result;int len;int namelen;int localsocket;struct sockaddr_un remote;char *name = "com.example.mysoftphone.localsocket";//与java上层相同哦localsocket = socket(AF_UNIX, SOCK_STREAM, 0);if (localsocket == -1) {__android_log_print(ANDROID_LOG_ERROR, THIS_FILE, "socket failed!");return -1;}remote.sun_family = AF_UNIX;remote.sun_path[0] = '\0'; /* abstract namespace */strcpy(remote.sun_path+1, name);namelen = strlen(name);len = 1 + namelen + offsetof(struct sockaddr_un, sun_path);result = connect(localsocket, (struct sockaddr *)&remote, len);if (result == -1) {__android_log_print(ANDROID_LOG_ERROR, THIS_FILE, "connect failed!");return -1;}result = send(localsocket, msg, size,0);if (result == -1) {__android_log_print(ANDROID_LOG_ERROR, THIS_FILE, "send failed!");return -1;}close(localsocket);return 0;}
更多相关文章
- 2014.01.21 ——— android 关联android-support源码
- 细数Android(安卓)Studio中使用junit4测试框架中的坑
- haproxy根据客户端浏览器进行跳转
- Android内容提供者源码
- android源码下载方式
- 【30篇突击 android】源码统计四
- 【安卓笔记】android客户端与服务端交互的三种方式
- Android(安卓)4.0.1 源码下载,编译和运行
- android支持多行的radiogroup