每天看点源码 peertalk —— 一种基于 Unix Domain Socket 的 RPC 方法

Posted KickOff

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了每天看点源码 peertalk —— 一种基于 Unix Domain Socket 的 RPC 方法相关的知识,希望对你有一定的参考价值。

peertalk 是一个用于在 ios 和 macOS 端传输数据的库。


https://github.com/rsms/peertalk


它基于 Unix Domain Socket 和 USBMuxd 服务,将任一侧的 TCP 连接通过 Unix Domain 类型的 Socket 转发到 USBMuxd 服务上,再由 USBMuxd 转发到另一端指定的 Socket 上,实现了通过 USB 传输 TCP 连接的目的。


这个库主要用来方便的传输大量任一类型的数据。


Github 搜一下可以看到有很多库都在用,比如 FB 的 Flipper,微信读书的 LookinServer 等等,都是基于 peertalk 在 iDevice 和 Mac 之间传输数据。


peertalk 传输的数据分为两类:

  • 一类是 property list

  • 一类是 binary


peertalk 的实现主要依赖 GCD 和 Socket, 通过 dispatch_data 转换各种自定义数据,通过 dispatch_io 写入或者读出 Socket。


基于 GCD 读写 Socket 的好处是可以无缝衔接 App 内原有的多线程框架和 runloop 模型,比如可以指定执行传输任务的 dispatch_queue。


peertalk & USBMuxd 详细的 workflow 可以参考该blog


https://reetyo.github.io/2019/04/09/2019-04-09/


流程图画的非常清楚,但是没有具体的代码解析,具体的代码流程解析我会写在下个月的 IPC 学习笔记的最后,这里就不放半成品了。


最后是预告,IPC 的学习笔记马【hai】上【zao】就要结束了,放一下目录,又是学了很久很久很久的一个topic 呢。





以上是关于每天看点源码 peertalk —— 一种基于 Unix Domain Socket 的 RPC 方法的主要内容,如果未能解决你的问题,请参考以下文章

每天看点英文文档:APUE第三版

每天看点英文文档:APUE第三版

每天看点英文文档:APUE第三版

每天看点英文文档:APUE第三版

每天看点英文文档:APUE第三版

每天看点英文文档:APUE第三版