在类UNIX系统中进程间通信使用更普遍的方法是普通的TCP还是UNIX Socket?
在linux中写了两个程序,一个基于QT,一个基于Python,各自有另外一方做不了(或不合适做)的任务。
然后两个进程需要互相发送数据进行通信。所以想到socket通信。但是选择TCP还是Unix Socket就犯了难。
本身服务器端是不需要外网通信的,所以初步选择了Unix Socket,但是常常因为对应的socket文件已经存在了,导致服务器启动不起来。但是用TCP的话,又会占用一个端口,并且不希望开放外部访问。
希望有做过类似东西的大神给指点一下这两种当时的正确用途都是什么?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
一般优先使用 UNIX domain socket。如果对应的 socket 文件已经存在就先删掉它。如果你要做单实例请使用 pidfile 和/或 flock 来处理。
如果你不考虑可移植性,可以考虑使用 abstract socket,就是跟 UNIX domain socket 一样但是只有名字没有文件的套接字,第一个字符为 NUL 即是。只有 Linux 支持。
如果是紧密相关的两个进程,可以使用管道或者 socketpair 来通信的。