127700Smckusick .\" Copyright (c) 1986 Regents of the University of California.
227700Smckusick .\" All rights reserved.  The Berkeley software License Agreement
327700Smckusick .\" specifies the terms and conditions for redistribution.
427700Smckusick .\"
5*27885Skarels .\"	@(#)udgramread.c	6.3 (Berkeley) 05/08/86
627700Smckusick .\"
727700Smckusick #include <sys/types.h>
827700Smckusick #include <sys/socket.h>
927700Smckusick #include <sys/un.h>
1027700Smckusick 
1127700Smckusick /*
1227700Smckusick  * In the included file <sys/un.h> a sockaddr_un is defined as follows
1327700Smckusick  * struct sockaddr_un {
1427700Smckusick  *	short	sun_family;
15*27885Skarels  *	char	sun_path[108];
1627700Smckusick  * };
1727700Smckusick  */
1827700Smckusick 
1927700Smckusick #include <stdio.h>
2027700Smckusick 
2127700Smckusick #define NAME "socket"
2227700Smckusick 
2327700Smckusick /*
2427700Smckusick  * This program creates a UNIX domain datagram socket, binds a name to it,
2527700Smckusick  * then reads from the socket.
2627700Smckusick  */
2727700Smckusick main()
2827700Smckusick {
2927884Skarels 	int sock, length;
3027700Smckusick 	struct sockaddr_un name;
3127884Skarels 	char buf[1024];
3227700Smckusick 
3327700Smckusick 	/* Create socket from which to read. */
3427700Smckusick 	sock = socket(AF_UNIX, SOCK_DGRAM, 0);
3527700Smckusick 	if (sock < 0) {
3627700Smckusick 		perror("opening datagram socket");
3727884Skarels 		exit(1);
3827700Smckusick 	}
3927700Smckusick 	/* Create name. */
4027700Smckusick 	name.sun_family = AF_UNIX;
4127700Smckusick 	strcpy(name.sun_path, NAME);
4227700Smckusick 	if (bind(sock, &name, sizeof(struct sockaddr_un))) {
4327700Smckusick 		perror("binding name to datagram socket");
4427884Skarels 		exit(1);
4527700Smckusick 	}
4627700Smckusick 	printf("socket -->%s\en", NAME);
4727700Smckusick 	/* Read from the socket */
4827700Smckusick 	if (read(sock, buf, 1024) < 0)
4927700Smckusick 		perror("receiving datagram packet");
5027700Smckusick 	printf("-->%s\en", buf);
5127884Skarels 	close(sock);
5227700Smckusick 	unlink(NAME);
5327700Smckusick }
54