python - 何时以及为什么使用 AF_UNIX,为什么使用同一台机器
问题描述
我第一次开始研究Pythonsocket
中的库,我意识到有一个常量调用它做同样的事情但它更快并且只与同一台机器建立连接并使用系统文件而不是互联网连接AF_UNIX
AF_INET
但我不明白为什么?为什么我要与自己的机器建立通信?那有什么用,在什么情况下使用 AF_UNIX 真的有用吗?
解决方案
您的问题有很多答案,我将尝试回答一些用例AF_UNIX
:
您可以使用它为其他进程公开一个私有通道,以便使用文件进行安全通信(因为它会尊重文件系统层次结构和 *nix 权限模型)。众所周知,PostgreSQL 会公开一个 unix 套接字,以便它的
psql
cli 安全连接。您可以使用套接字协议实现可交换通信,因为它很容易在不同主机之间移动
AF_INET
和AF_UNIX
扩展它的通信(redis 和 docker 就是这样做的)。您可以为不同的流程和技术创建一种可扩展且快速的方式来进行通信,而无需
AF_INET
包括设备开销,即使您使用的是环回接口。
可能性实际上是无限的,因为它包括一些个人喜好。但是,AF_UNIX
使用与 as 类似的规范这一事实AF_INET
使其成为扩展进程之间通信的强大工具,而无需依赖大量不同的工具(FIFO、共享内存、内部队列、文件等)。
推荐阅读
- r - 如何在 R 中动态组合具有不同列名的数据框?
- oracle - 如何解决警告:使用编译错误创建的函数
- java - 尝试使用 getInorderIterator 但它没有打印我的树 InOrder
- java - 逐行读取非阻塞 java.nio SocketChannel
- javascript - 如何检查文件名是否包含带有 Mocha/Chai 的字符串?
- java - 如何使用方法修复“实际参数列表和形式参数列表的长度不同”?
- laravel - 使用“GrahamCampbell/Laravel-GitHub”时如何修复“Http\Adapter\Guzzle6\Client::buildClient() 的参数太少”
- interrupt-handling - 从哪里开始键盘中断处理程序
- android - 在 Android 4.2 上与 WhatsApp 共享音频文件失败
- r - 如何解决network_plot中的错误“找不到对象'X1'”?