Unix-Sockets
為不同的主機使用 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);
不可以。您不能使用
AF_UNIX
套接字在網路上的主機之間進行通信,因為這些引用文件系統上的本地 inode 以將套接字綁定到,並且本地文件系統僅對本地主機可用。要在節點之間進行通信,您需要使用
AF_INET
套接字,該套接字將綁定到 IP 地址和埠,該地址和埠可以訪問不同的主機。