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


 

更多相关文章

  1. 2014.01.21 ——— android 关联android-support源码
  2. 细数Android(安卓)Studio中使用junit4测试框架中的坑
  3. haproxy根据客户端浏览器进行跳转
  4. Android内容提供者源码
  5. android源码下载方式
  6. 【30篇突击 android】源码统计四
  7. 【安卓笔记】android客户端与服务端交互的三种方式
  8. Android(安卓)4.0.1 源码下载,编译和运行
  9. android支持多行的radiogroup

随机推荐

  1. adb使用持续更新
  2. Android写sys文件节点
  3. android sql 批量处理插入/修改/删除 操
  4. 斐波那契函数的优化
  5. Android 日历方式显示的日期选择组件(日
  6. 开发学习-第一个Android页面
  7. 实战 Android中的UI过度绘制
  8. 控件的圆角
  9. 'setenv' was not declared in this scop
  10. Android P Camera2相机简单解析(一、openC