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

# getsockname(2)

get socket name

## NAME

**getsockname** – get socket name

## SYNOPSIS

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

*int*\

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

## DESCRIPTION

The **getsockname**() function returns the current *address* for 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.

Note: For the UNIX domain, the address length returned is the *address\_len* parameter passed to the previous [bind(2)](/bind/2.md) system call and not the *sa\_len* field of the *address* parameter passed to [bind(2)](/bind/2.md).

## RETURN VALUES

The **getsockname()** 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 **getsockname**() system call will succeed unless:

- \[EBADF\]

  The argument *socket* is not a valid file 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.

- \[ENOTSOCK\]

  The argument *socket* is not a socket (e.g., a plain file).

- \[EOPNOTSUPP\]

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

## SEE ALSO

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

## BUGS

Names bound to sockets in the UNIX domain are inaccessible; **getsockname**() returns a zero-length address.

## HISTORY

The **getsockname**() call appeared in 4.2BSD.
