#include #include #include #include #include #include #include int main(int argc, char **argv) { int s; struct sockaddr_un addr; char buf[4096]; int r; if ((s = socket(AF_UNIX, SOCK_SEQPACKET, 0)) < 0) { perror("socket"); exit(EXIT_FAILURE); } memset(&addr, 0, sizeof(struct sockaddr_un)); addr.sun_family = AF_UNIX; unlink("/tmp/sock-test"); strcpy(addr.sun_path, "/tmp/sock-test"); if (bind(s, (struct sockaddr *)&addr, sizeof(addr.sun_path))) { perror("bind"); exit(EXIT_FAILURE); } if (listen(s, 1) == -1) { perror("listen"); exit(EXIT_FAILURE); } /* before this recv below, we should have an accept call (wait for connection): struct sockaddr_un raddr; int lraddr = sizeof(raddr); sock = accept(s, (struct sockaddr *)&addr, &lraddr)) then: recv(sock...) */ r = recv(s, buf, 4096, 0); if (r < 0) { perror("recv"); printf("errno: %d\n", errno); } close(s); unlink("/tmp/sock-test"); }