* Copyright (c) 1986 The Regents of the University of California.
* Redistribution and use in source and binary forms are permitted
* provided that the above copyright notice and this paragraph are
* duplicated in all such forms and that any documentation,
* advertising materials, and other materials related to such
* distribution and use acknowledge that the software was developed
* by the University of California, Berkeley. The name of the
* University may not be used to endorse or promote products derived
* from this software without specific prior written permission.
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
"@(#) Copyright (c) 1986 The Regents of the University of California.\n\
static char sccsid
[] = "@(#)dgramread.c 6.4 (Berkeley) 3/7/89";
* In the included file <netinet/in.h> a sockaddr_in is defined as follows:
* struct in_addr sin_addr;
* This program creates a datagram socket, binds a name to it, then reads
/* Create socket from which to read. */
sock
= socket(AF_INET
, SOCK_DGRAM
, 0);
perror("opening datagram socket");
/* Create name with wildcards. */
name
.sin_family
= AF_INET
;
name
.sin_addr
.s_addr
= INADDR_ANY
;
if (bind(sock
, &name
, sizeof(name
))) {
perror("binding datagram socket");
/* Find assigned port value and print it out. */
if (getsockname(sock
, &name
, &length
)) {
perror("getting socket name");
printf("Socket has port #%d\en", ntohs(name
.sin_port
));
/* Read from the socket */
if (read(sock
, buf
, 1024) < 0)
perror("receiving datagram packet");