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;}


更多相关文章

  1. Android实现简单计算器源码
  2. 从源码中查看当前android版本
  3. Android泡泡聊天界面的源码实现
  4. android音乐播放器源码java类
  5. Android源码中的单例模式android.util.Singleton
  6. Android源码目录结构详解
  7. android 源码编译报错记录
  8. Android 系统自带的发送短信的界面源码

随机推荐

  1. Android 自动更新程序
  2. Unable to get view server version from
  3. Android初学者—listView用法
  4. android/java 计算大文件的sha1值
  5. Android 持久化技术(一)之SharedPreference
  6. Android OkHttp3简介和使用详解
  7. Android(安卓)EditText回车不换行
  8. Android自定义属性时format选项可以取用
  9. Android(安卓)复习_Task 与 Back Stack
  10. 赵雅智_名片夹(4)_Android中listview可折叠