Android跨进程通讯之LocalSocket和LocalServerSocket

先贴上LocalSocket的代码:

//创建对象
LocalSocket localSocket = new LocalSocket();
//连接socketServerSocket
localSocket.connect(new LocalSocketAddress(String addrStr));

获取localSocket的输入输出流:

outputStream = localSocket.getOutputStream();
inputStream = localSocket.getInputStream();

写入数据:

outputStream.write("输入的内容".getBytes());

接收数据:

try {    
      int readed = inputStream.read();
      int size = 0;
      byte[] bytes = new byte[0];
      while (readed != -1) {
          byte[] copy = new byte[500000]; 
          System.arraycopy(bytes, 0, copy, 0, bytes.length);
          bytes = copy;
          bytes[size++] = (byte) readed; 
          //以换行符标识成结束
          if ('\n' == (byte) readed) {
              String resultStr = new String(bytes, 0, size);                                                          break;
        } 
       readed = inputStream.read();
    }
} catch (IOException e) {
        return false;
}

至此,LocalSocket部分的代码已经完毕了,注意捕获异常。

LocalServerSocket部分代码马上贴上:

//初始化
try {
    //socketAddress需跟localSocket地址一致,否则无法连接上
    serverSocket = new LocalServerSocket(socketAddress);
} catch (IOException e) {
    LoggerHelper.e("Server to establish connection exception:" + e.toString());
    e.printStackTrace();
    return false;
}
try {
    //获取接收的LocalSocket
    localSocket = serverSocket.accept();
    //设置缓冲大小
    localSocket.setReceiveBufferSize(ConstantConfig.BUFFER_SIZE);
    localSocket.setSendBufferSize(ConstantConfig.BUFFER_SIZE);
} catch (IOException e) {
    e.printStackTrace();
    LoggerHelper.d("Waiting to be linked to a bug,error:" + e.toString());
    return false;
}

获取输入输出流一致:

if (localSocket != null) {
    try {
        inputStream = localSocket.getInputStream();
        outputStream = localSocket.getOutputStream();
        /** 允许一直接收数据,一直到连接被断开,则认为应用端退出,自己也退出 */
        while (isLock && receiveData()) ;
    } catch (IOException e) {
        LoggerHelper.e("Get stream exception:" + e.toString());        e.printStackTrace();
        return false;
    }
}

已经ok啦。。。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,678评论 25 708
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,026评论 19 139
  • 在经过一次没有准备的面试后,发现自己虽然写了两年的android代码,基础知识却忘的差不多了。这是程序员的大忌,没...
    猿来如痴阅读 2,877评论 3 10
  • 别人可以孤注一掷奋不顾身你可以吗?问了自己好几遍能不能做到这个地步,答案是否定的。因为确实我身后的背负的东西不一样...
    青烷阅读 376评论 0 0
  • 他躺在病床上。癌症晚期。 生命之路对他而言已经不长了。一天, 极度虚弱的他告诉我,他有个小小的愿望, 他想吃一种叫...
    青衫湿旧阅读 223评论 6 8