Chapter Contents |
Previous |
Next |
getpeername |
Portability: | UNIX compatible |
SYNOPSIS | |
DESCRIPTION | |
RETURN VALUE | |
PORTABILITY | |
EXAMPLE | |
RELATED FUNCTIONS |
SYNOPSIS |
#include <sys/types.h> #include <sys/socket.h> int getpeername(int s, void *addr, int *addrlen);
DESCRIPTION |
getpeername
stores the address of the peer that is connected to socket
s
. The
addr
and
addrlen
functions describe the buffer into which
getpeername
places the
address of the new peer.
addr
points to a
sockaddr
structure or one of its derivatives,
such as
sockaddr_in
, and
addrlen
points to an integer
containing the size of the buffer in bytes. If the buffer size is not large
enough to contain the address of the peer, the value of the address is not
completely copied. No error is indicated in this situation. On return, the
integer pointed to by
addrlen
is set to the length that was actually copied. For connected sockets,
the address that is returned is the same as that returned by the
recvfrom
function.
RETURN VALUE |
If
getpeername
succeeds, it returns a
0
. Otherwise, it returns a
-1
, and sets
errno
to indicate the type of error.
PORTABILITY |
getpeername
is portable to other environments, including most UNIX
systems, that implement BSD sockets.
EXAMPLE |
In this example,
getpeername
returns the port and address of the
peer program.
#include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #include <stdio.h> f() { int s; struct sockaddr_in peer; int peer_len; . . . /* We must put the length in a variable. */ peer_len = sizeof(peer); /* Ask getpeername to fill in peer's socket address. */ if (getpeername(s, &peer, &peer_len) == -1) { perror("getpeername() failed"); return -1; } /* Print it. The IP address is often zero because */ /* sockets are seldom bound to a specific local */ /* interface. */ printf("Peer's IP address is: %s\n", inet_ntoa(peer.sin_addr)); printf("Peer's port is: %d\n", (int) ntohs(peer.sin_port)); . . . }
RELATED FUNCTIONS |
accept
,
bind
,
connect
,
getsockname
,
recvfrom
Chapter Contents |
Previous |
Next |
Top of Page |
Copyright © 2001 by SAS Institute Inc., Cary, NC, USA. All rights reserved.