#include #include #include #include #include #define SOCK "THIS IS A TEST SOCKET" #define SAS2SA(x) ((struct sockaddr *)(x)) int main() { struct sockaddr_un sa; char buf[1024]; socklen_t slen; int s1 = socket(AF_UNIX, SOCK_DGRAM, 0); int s2 = socket(AF_UNIX, SOCK_DGRAM, 0); unlink(SOCK); sa.sun_family = AF_UNIX; strcpy(sa.sun_path, SOCK); if (bind(s1, SAS2SA(&sa), sizeof(sa))) perror("bind"); if (8 != sendto( s2, "derpderp", 8, 0, SAS2SA(&sa), sizeof(sa))) perror("sendto"); slen = sizeof(sa); if (!recvfrom( s1, buf, 1024, 0, SAS2SA(&sa), &slen)) perror("recvfrom"); printf("recvfrom addr length: %d\n", slen); slen = sizeof(sa); if (getsockname(s2, SAS2SA(&sa), &slen)) perror("getsockname"); printf("getsockname addr length: %d\n", slen); unlink(SOCK); return 0; }