Android 与 native C 利用本地socket进行消息传递
16lz
2021-01-23
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 <sys/types.h> #include <sys/socket.h> #include <sys/un.h> #include <unistd.h> #include <stdlib.h> #include <stdio.h> #include <android/log.h>#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;}
更多相关文章
- Android实现简单计算器源码
- 从源码中查看当前android版本
- Android泡泡聊天界面的源码实现
- android音乐播放器源码java类
- Android源码中的单例模式android.util.Singleton
- Android源码目录结构详解
- android 源码编译报错记录
- Android 系统自带的发送短信的界面源码