1*48154Sbostic .\" Copyright (c) 1986 The Regents of the University of California. 2*48154Sbostic .\" All rights reserved. 3*48154Sbostic .\" 4*48154Sbostic .\" %sccs.include.redist.roff% 5*48154Sbostic .\" 6*48154Sbostic .\" @(#)udgramread.c 6.5 (Berkeley) 04/17/91 7*48154Sbostic .\" 827700Smckusick #include <sys/types.h> 927700Smckusick #include <sys/socket.h> 1027700Smckusick #include <sys/un.h> 1127700Smckusick 1227700Smckusick /* 1327700Smckusick * In the included file <sys/un.h> a sockaddr_un is defined as follows 1427700Smckusick * struct sockaddr_un { 1527700Smckusick * short sun_family; 1627885Skarels * char sun_path[108]; 1727700Smckusick * }; 1827700Smckusick */ 1927700Smckusick 2027700Smckusick #include <stdio.h> 2127700Smckusick 2227700Smckusick #define NAME "socket" 2327700Smckusick 2427700Smckusick /* 2527700Smckusick * This program creates a UNIX domain datagram socket, binds a name to it, 2627700Smckusick * then reads from the socket. 2727700Smckusick */ 2827700Smckusick main() 2927700Smckusick { 3027884Skarels int sock, length; 3127700Smckusick struct sockaddr_un name; 3227884Skarels char buf[1024]; 3327700Smckusick 3427700Smckusick /* Create socket from which to read. */ 3527700Smckusick sock = socket(AF_UNIX, SOCK_DGRAM, 0); 3627700Smckusick if (sock < 0) { 3727700Smckusick perror("opening datagram socket"); 3827884Skarels exit(1); 3927700Smckusick } 4027700Smckusick /* Create name. */ 4127700Smckusick name.sun_family = AF_UNIX; 4227700Smckusick strcpy(name.sun_path, NAME); 4327700Smckusick if (bind(sock, &name, sizeof(struct sockaddr_un))) { 4427700Smckusick perror("binding name to datagram socket"); 4527884Skarels exit(1); 4627700Smckusick } 4727700Smckusick printf("socket -->%s\en", NAME); 4827700Smckusick /* Read from the socket */ 4927700Smckusick if (read(sock, buf, 1024) < 0) 5027700Smckusick perror("receiving datagram packet"); 5127700Smckusick printf("-->%s\en", buf); 5227884Skarels close(sock); 5327700Smckusick unlink(NAME); 5427700Smckusick } 55