1 /* 2 * Copyright (c) 1986 The Regents of the University of California. 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms are permitted 6 * provided that the above copyright notice and this paragraph are 7 * duplicated in all such forms and that any documentation, 8 * advertising materials, and other materials related to such 9 * distribution and use acknowledge that the software was developed 10 * by the University of California, Berkeley. The name of the 11 * University may not be used to endorse or promote products derived 12 * from this software without specific prior written permission. 13 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR 14 * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED 15 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 16 */ 17 18 #ifndef lint 19 char copyright[] = 20 "@(#) Copyright (c) 1986 The Regents of the University of California.\n\ 21 All rights reserved.\n"; 22 #endif /* not lint */ 23 24 #ifndef lint 25 static char sccsid[] = "@(#)udgramread.c 6.4 (Berkeley) 03/07/89"; 26 #endif /* not lint */ 27 28 #include <sys/types.h> 29 #include <sys/socket.h> 30 #include <sys/un.h> 31 32 /* 33 * In the included file <sys/un.h> a sockaddr_un is defined as follows 34 * struct sockaddr_un { 35 * short sun_family; 36 * char sun_path[108]; 37 * }; 38 */ 39 40 #include <stdio.h> 41 42 #define NAME "socket" 43 44 /* 45 * This program creates a UNIX domain datagram socket, binds a name to it, 46 * then reads from the socket. 47 */ 48 main() 49 { 50 int sock, length; 51 struct sockaddr_un name; 52 char buf[1024]; 53 54 /* Create socket from which to read. */ 55 sock = socket(AF_UNIX, SOCK_DGRAM, 0); 56 if (sock < 0) { 57 perror("opening datagram socket"); 58 exit(1); 59 } 60 /* Create name. */ 61 name.sun_family = AF_UNIX; 62 strcpy(name.sun_path, NAME); 63 if (bind(sock, &name, sizeof(struct sockaddr_un))) { 64 perror("binding name to datagram socket"); 65 exit(1); 66 } 67 printf("socket -->%s\en", NAME); 68 /* Read from the socket */ 69 if (read(sock, buf, 1024) < 0) 70 perror("receiving datagram packet"); 71 printf("-->%s\en", buf); 72 close(sock); 73 unlink(NAME); 74 } 75