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