socket 应该是更通用,应用更广的 ipc 通信方式,一个是各个系统都能用,一个是扩展性好,改成跨机器也方便。在支持 socketpair 的系统上,趁手的很,再不济走回环性能也没比 pipe 差到哪去。
socket 可以和 poll 、epoll 之类的共用,win 的 pipe 却不行,在服务器端几乎是必选
不过你这是安卓和 win 的话,情况大不一样。因为 win 不支持 socketpair ,它的 pipe 接口和 linux 的也不一样,要么各个平台代码分开,那么 pipe 在 win 平台确实简单一些。可如果要统一代码,那只能改成 tcp socket 之类两个平台都有的东西。
至于安全性,这两个本身都没有安全性啊(如果非得说别人攻击时,肯定会首先扫端口,那 tcp 确实更容易暴露)。pipe 本身它也不知道另一端是哪个程序,要做安全还得在数据通信里做。 |