实际上,我有一个在 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 地址和端口,可以访问不同的主机。