对不同主机使用 Unix 域套接字

对不同主机使用 Unix 域套接字

实际上,我有一个在 ARM-Linux 上运行的软件,其中有我的三个应用程序。我想在 Linux 主机 x86 上运行某个应用程序。

我的 ARM-Linux 程序中的内部组件使用 Unix 域套接字进行通信。

我的套接字类型是:AF_UNIX

我使用的是旧的 ARM 处理器,不支持 Valgrind。应用程序中存在一些内存泄漏导致崩溃。因此,我在主机中构建应用程序,并弄清楚如何使用域套接字在 ARM 和 x86 之间建立通信?


现在我遇到的情况是应用程序foo在ARM中并且bar是Linux x86。问题是不同主机之间可以通信吗?


阅读下面的链接后,我认为 Unix 域套接字是跨域的,我很困惑。

我读,

UNIX 域套接字是同一主机上的进程的一种方法可以进行通信。使用流套接字进行双向通信。

fd = socket(AF_UNIX, SOCK_STREAM, 0);

答案1

不可以。您无法使用AF_UNIX套接字在网络上的主机之间进行通信,因为它们引用文件系统上的本地 inode 来绑定套接字,并且本地文件系统仅适用于本地主机。

要在节点之间进行通信,您需要使用AF_INET套接字,它将绑定到 IP 地址和端口,可以访问不同的主机。

相关内容