getpeername - get address of connected peer
int getpeername(int s, void *addr, int *addrlen);
_XOPEN_SOURCE_EXTENDED only (UNIX 98)
int getpeername(int s, struct sockaddr *addr, socklen_t *addrlen);
Obsolescent _XOPEN_SOURCE_EXTENDED only (UNIX 95)
int getpeername(int s, struct sockaddr *addr, size_t *addrlen);
getpeername() returns the address of the peer socket connected to the
socket indicated by s, where s is a socket descriptor. addr points to
a socket address structure in which this address is returned. addrlen
points to a variable that should be initialized to indicate the size
of the address structure. On return, the variable contains the actual
size of the address returned (in bytes). If addr does not point to
enough space to contain the whole address of the peer, only the first
addrlen bytes of the address are returned.
The addr struct contains the X.25 addressing information of the remote
peer socket connected to socket s. However, the x25ifname field of
the addr struct contains the name of the local X.25 interface through
which the call arrived.
Upon successful completion, getpeername() returns 0; otherwise it
returns -1 and sets errno to indicate the error.
getpeername() fails if any of the following conditions are
[EBADF] s is not a valid file descriptor.
[ENOTSOCK] s is a valid file descriptor, but it is not a
[ENOTCONN] The socket is not connected.
[ENOBUFS] No buffer space is available to perform the
Hewlett-Packard Company - 1 - HP-UX Release 11i: November 2000
[EFAULT] addr or addrlen are not valid pointers.
[EINVAL] The socket has been shut down.
[EOPNOTSUPP] Operation not supported for AF_UNIX sockets.
Currently, the socklen_t and size_t types are the same size. This is
compatible with both the UNIX 95 and UNIX 98 profiles. However, in a
future release, socklen_t might be a different size. In that case,
passing a size_t pointer will evoke compile-time warnings, which must
be corrected in order for the application to behave correctly.
Applications that use socklen_t now, where appropriate, will avoid
such migration problems. On the other hand, applications that need to
be portable to the UNIX 95 profile should follow the X/Open
specification (see xopen_networking(7)).
Currently, the default behavior is the HP-UX BSD Sockets; however, it
might be changed to X/Open Sockets in a future release. At that time,
any HP-UX BSD Sockets behavior that is incompatible with X/Open
Sockets might be obsoleted. Applications that conform to the X/Open
specification now will avoid migration problems (see
The getpeername() system call is thread-safe. It has a cancellation
point; and it is async-cancel safe, async-signal safe, and fork-safe.
getpeername() was developed by HP and the University of California,
bind(2), socket(2), getsockname(2), inet(7F), af_ccitt(7F),
Hewlett-Packard Company - 2 - HP-UX Release 11i: November 2000