问题描述
我第一次开始在 Python 中研究socket
库,我意识到有一个名为AF_UNIX
的常量与{{1 }},但速度更快,并且只能与同一台计算机建立连接,并使用系统文件而不是Internet连接
但是我不明白的是为什么?为什么我要与自己的机器建立通信?这有什么用?在什么情况下使用AF_UNIX真正有用?
解决方法
您的问题有很多答案,我将尝试回答AF_UNIX
的一些用例:
-
您可以使用它公开一个私有通道,供其他进程使用文件安全地进行通信(因为它将尊重文件系统层次结构和* nix权限模型)。众所周知,PostgreSQL通过
psql
CLI来安全连接来公开unix套接字。 -
您可以使用套接字协议来实现可交换的通信,因为在
AF_INET
和AF_UNIX
之间移动并在不同主机之间扩展其通信非常容易(redis和docker都这样做了。) > -
即使使用环回接口,您也可以创建一种可扩展且快速的方式,使不同的流程和技术进行通信,而不会产生设备开销
AF_INET
。
实际上可能性是无限的,因为它包括一些个人喜好。但是AF_UNIX
使用与AF_INET
类似的规范这一事实使它成为扩展进程之间通信的强大工具,而不必依赖极为不同的工具(FIFO,共享内存,内部队列,文件等)。一些)。