GETPEERNAME(2)

NAME
getpeername - get name of connected peer

LIBRARY
libc

SYNOPSIS
#include <sys/types.h>
#include <sys/socket.h>
int
getpeername(int s, struct sockaddr *name, socklen_t *namelen);

DESCRIPTION
Getpeername() returns the name of the peer connected to socket s. The namelen parameter should be initialized to indicate the amount of space pointed to by name. On return it contains the actual size of the name returned (in bytes). The name is truncated if the buffer provided is too small.

IMPLEMENTATION NOTES

In the non-threaded library getpeername() is implemented as the getpeername syscall.

In the threaded library, the getpeername syscall is assembled to _thread_sys_getpeername() and getpeername() is implemented as a function which locks s for read and write, then calls _thread_sys_getpeername(). Before returning, getpeername() unlocks s.

RETURN VALUES
A 0 is returned if the call succeeds, -1 if it fails.

ERRORS
The call succeeds unless:

[EBADF]
    The argument s is not a valid descriptor.

[ECONNRESET]
    The connection has been reset by the peer.

[ENOTSOCK]
    The argument s is a file, not a socket.

[ENOTCONN]
    The socket is not connected.

[ENOBUFS]
    Insufficient resources were available in the system to perform the operation.

[EFAULT]
    The name parameter points to memory not in a valid part of the process address space.

SEE ALSO
accept(2), bind(2), getsockname(2), socket(2)

HISTORY
The getpeername() function call appeared in 4.2BSD.