我今天在Cherokee上设置了Django(使用SCGI),我注意到the Django docs说你可以使用主机/端口组合或套接字来进行webserver和Django之间的通信。
他们唯一要说的就是
您选择的是一种偏好方式;由于权限问题,TCP套接字通常更容易。
(顺便说一句,我使用套接字执行此操作时遇到权限问题,但主机没有问题:)。 )
我依旧记得套接字在我的系统编程类中是如何工作的,但我真的很好奇两者之间的有效区别。任何时候都可以选择某种东西,某人对此事有意见,所以我希望得到这个。特别是,有任何性能差异吗?
或者,如果它真的没关系,我只想要一些确认,所以我可以继续我的编程并忽略这个系统管理员的东西。
答案 0 :(得分:39)
UNIX套接字作为文件系统中的文件进行管理。您需要正确设置用户/组值和权限。它也必须在你正在使用的任何jailroot中(使用postfix + mysql时常见的错误)。
只要绑定到端口>就不需要为TCP套接字执行此操作。 1000。
UNIX套接字可以被认为速度稍快,因为它没有网络协议,因此会跳过网络堆栈,但仅限于一台计算机。另一方面,TCP允许您连接到在不同主机上运行的服务。
答案 1 :(得分:6)
我认为真正的区别在于,如果你的连接速率非常快,你可以用完端口,因为使用过的端口会在TIME_WAIT状态下使用TCP一段时间。命名套接字不是这样。
如果我知道它只会被本地主机使用,我会使用命名套接字进行本地连接。但是对于这个用途......是的,这不重要。不是表现明智或其他方面。如果你改变主意,以后很容易改变。如果使用该选项,请确保防火墙TCP端口。
同样,TCP套接字也是套接字。