# server
#include <stdio.h> #include <arpa/inet.h> #include <sys/un.h> #include <string.h> #include <unistd.h> int main() { int lfd = socket(AF_LOCAL, SOCK_STREAM, 0); struct sockaddr_un saddr; saddr.sun_family = AF_LOCAL; strcpy(saddr.sun_path, "server.sock"); bind(AF_LOCAL, (struct sockaddr *) &saddr, sizeof(saddr)); listen(lfd, 100); struct sockaddr_un caddr; caddr_len = sizeof(caddr); int cfd = accept(AF_LOCAL, (struct sockaddr *) &caddr, &caddr_len); while(1) { // 通信 } return 0; }
# client
#include <stdio.h> #include <arpa/inet.h> #include <sys/un.h> #include <string.h> #include <unistd.h> int main() { int lfd = socket(AF_LOCAL, SOCK_STREAM, 0); struct sockaddr_un caddr; caddr.sun_family = AF_LOCAL; strcpy(caddr.sun_path, "client.sock"); // 客户端也需要bind bind(AF_LOCAL, (struct sockaddr *) &caddr, sizeof(caddr)); struct sockaddr_un saddr; saddr.sun_family = AF_LOCAL; strcpy(caddr.sun_path, "server.sock"); // 客户端需要连接 connect(lfd, (struct sockaddr *) &saddr, sizeof(saddr)); while(1) { // 通信 } return 0; }