---
name: "getsockname"
section: "2"
platform: "linux"
package: "man-pages"
version: "6.19-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux", "freebsd", "macos"]
url: "https://new.carta.tech/getsockname/2"
---

# getsockname(2)

get socket name

## NAME

getsockname - get socket name

## LIBRARY

Standard C library (*libc*, *-lc*)

## SYNOPSIS

```
#include <sys/socket.h>
```

**int getsockname(int** *sockfd***, struct sockaddr \*restrict** *addr***,**                 **socklen\_t \*restrict** *addrlen***);**

## DESCRIPTION

**getsockname**() returns the current address to which the socket *sockfd* is bound, in the buffer pointed to by *addr*. The *addrlen* argument should be initialized to indicate the amount of space (in bytes) pointed to by *addr*. On return it contains the actual size of the socket address.

The returned address is truncated if the buffer provided is too small; in this case, *addrlen* will return a value greater than was supplied to the call.

## RETURN VALUE

On success, zero is returned. On error, -1 is returned, and *errno* is set to indicate the error.

## ERRORS

- **EBADF**

  The argument *sockfd* is not a valid file descriptor.

- **EFAULT**

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

- **EINVAL**

  *addrlen* is invalid (e.g., is negative).

- **ENOBUFS**

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

- **ENOTSOCK**

  The file descriptor *sockfd* does not refer to a socket.

## STANDARDS

POSIX.1-2024.

## HISTORY

POSIX.1-2001, SVr4, 4.2BSD.

## SEE ALSO

[**bind**(2)](/bind/2.md), [**socket**(2)](/socket/2.md), [**getifaddrs**(3)](/getifaddrs/3.md), [**ip**(7)](/ip/7.md), [**socket**(7)](/socket/7.md), [**unix**(7)](/unix/7.md)
