---
name: "getpeername"
section: "2"
platform: "macos"
package: "xnu"
version: "12377.121.6"
release: "macOS 26.5"
platforms: ["linux", "freebsd", "macos"]
url: "https://new.carta.tech/getpeername/2"
---

# getpeername(2)

get address of connected peer

## NAME

**getpeername** – get address of connected peer

## SYNOPSIS

**#include \<sys/socket.h\>**

*int*\

**getpeername**(*int socket*, *struct sockaddr \*restrict address*, *socklen\_t \*restrict address\_len*);

## DESCRIPTION

The **getpeername**() function returns the address of the peer connected to the specified  socket.

The *address\_len* parameter should be initialized to indicate the amount of space pointed to by *address*. On return it contains the actual size of the address returned (in bytes).

The address is truncated if the buffer provided is too small.

## RETURN VALUES

The **getpeername()** function returns the value 0 if successful; otherwise the value -1 is returned and the global variable errno is set to indicate the error.

## ERRORS

The call succeeds unless:

- \[EBADF\]

  The argument *socket* is not a valid descriptor.

- \[EFAULT\]

  The  *address* parameter points to memory not in a valid part of the process address space.

- \[EINVAL\]

  *socket* has been shut down.

- \[ENOBUFS\]

  Insufficient resources were available in the system to perform the operation.

- \[ENOTCONN\]

  Either the socket is not connected or it has not had the peer pre-specified.

- \[ENOTSOCK\]

  The argument *socket* refers to something other than a socket (e.g., a file).

- \[EOPNOTSUPP\]

  **getpeername**() is not supported for the protocol in use by *socket*.

## SEE ALSO

[accept(2)](/accept/2.md), [bind(2)](/bind/2.md), [getsockname(2)](/getsockname/2.md), [socket(2)](/socket/2.md)

## HISTORY

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