1*27700Smckusick .\" Copyright (c) 1986 Regents of the University of California. 2*27700Smckusick .\" All rights reserved. The Berkeley software License Agreement 3*27700Smckusick .\" specifies the terms and conditions for redistribution. 4*27700Smckusick .\" 5*27700Smckusick .\" @(#)udgramread.c 6.1 (Berkeley) 05/04/86 6*27700Smckusick .\" 7*27700Smckusick #include <sys/types.h> 8*27700Smckusick #include <sys/socket.h> 9*27700Smckusick #include <sys/un.h> 10*27700Smckusick 11*27700Smckusick /* 12*27700Smckusick * In the included file <sys/un.h> a sockaddr_un is defined as follows 13*27700Smckusick * struct sockaddr_un { 14*27700Smckusick * short sun_family; 15*27700Smckusick * char sun_path[109]; 16*27700Smckusick * }; 17*27700Smckusick */ 18*27700Smckusick 19*27700Smckusick #include <stdio.h> 20*27700Smckusick 21*27700Smckusick #define NAME "socket" 22*27700Smckusick 23*27700Smckusick /* 24*27700Smckusick * This program creates a UNIX domain datagram socket, binds a name to it, 25*27700Smckusick * then reads from the socket. 26*27700Smckusick */ 27*27700Smckusick 28*27700Smckusick main() 29*27700Smckusick { 30*27700Smckusick int sock, length; 31*27700Smckusick struct sockaddr_un name; 32*27700Smckusick char buf[1024]; 33*27700Smckusick 34*27700Smckusick /* Create socket from which to read. */ 35*27700Smckusick sock = socket(AF_UNIX, SOCK_DGRAM, 0); 36*27700Smckusick if (sock < 0) { 37*27700Smckusick perror("opening datagram socket"); 38*27700Smckusick exit(-1); 39*27700Smckusick } 40*27700Smckusick /* Create name. */ 41*27700Smckusick name.sun_family = AF_UNIX; 42*27700Smckusick strcpy(name.sun_path, NAME); 43*27700Smckusick if (bind(sock, &name, sizeof(struct sockaddr_un))) { 44*27700Smckusick close(sock); 45*27700Smckusick perror("binding name to datagram socket"); 46*27700Smckusick } 47*27700Smckusick printf("socket -->%s\en", NAME); 48*27700Smckusick /* Read from the socket */ 49*27700Smckusick if (read(sock, buf, 1024) < 0) 50*27700Smckusick perror("receiving datagram packet"); 51*27700Smckusick printf("-->%s\en", buf); 52*27700Smckusick unlink(NAME); 53*27700Smckusick close(sock); 54*27700Smckusick } 55