## GSocketAddress

GSocketAddress — Abstract base class representing endpoints for socket communication

## Synopsis

                        GSocketAddress;
    enum                GSocketFamily;
    GSocketAddress *    g_socket_address_new_from_native    (gpointer native,
                                                             gsize len);
    GSocketFamily       g_socket_address_get_family         (GSocketAddress *address);
    gboolean            g_socket_address_to_native          (GSocketAddress *address,
                                                             gpointer dest,
                                                             gsize destlen,
                                                             GError **error);
    gssize              g_socket_address_get_native_size    (GSocketAddress *address);

## Object Hierarchy

      GObject
       +----GSocketAddress
             +----GInetSocketAddress
             +----GUnixSocketAddress

      GEnum
       +----GSocketFamily

## Implemented Interfaces

GSocketAddress implements GSocketConnectable.

## Properties

      "family"                   GSocketFamily         : Read

## Description

GSocketAddress is the equivalent of struct sockaddr in the BSD sockets API. This is an abstract class; use GInetSocketAddress for internet sockets, or GUnixSocketAddress for UNIX domain sockets.

## Details

### GSocketAddress

    typedef struct _GSocketAddress GSocketAddress;

A socket endpoint address, corresponding to struct sockaddr or one of its subtypes.

### enum GSocketFamily

    typedef enum {
      G_SOCKET_FAMILY_INVALID,
    #ifdef GLIB_SYSDEF_AF_UNIX
      G_SOCKET_FAMILY_UNIX = GLIB_SYSDEF_AF_UNIX,
    #endif
      G_SOCKET_FAMILY_IPV4 = GLIB_SYSDEF_AF_INET,
      G_SOCKET_FAMILY_IPV6 = GLIB_SYSDEF_AF_INET6
    } GSocketFamily;

The protocol family of a GSocketAddress. (These values are identical to the system defines `AF_INET`, `AF_INET6` and `AF_UNIX`, if available.)

`G_SOCKET_FAMILY_INVALID` | no address family
`G_SOCKET_FAMILY_UNIX` | the UNIX domain family
`G_SOCKET_FAMILY_IPV4` | the IPv4 family
`G_SOCKET_FAMILY_IPV6` | the IPv6 family

Since 2.22

### g_socket_address_new_from_native ()

    GSocketAddress *    g_socket_address_new_from_native    (gpointer native,
                                                             gsize len);

Creates a GSocketAddress subclass corresponding to the native struct sockaddr `native`.

`native` : | a pointer to a struct sockaddr
`len` : | the size of the memory location pointed to by `native`
Returns : | a new GSocketAddress if `native` could successfully be converted, otherwise `NULL`.

Since 2.22

### g_socket_address_get_family ()

    GSocketFamily       g_socket_address_get_family         (GSocketAddress *address);

Gets the socket family type of `address`.

`address` : | a GSocketAddress
Returns : | the socket family type of `address`.

Since 2.22

### g_socket_address_to_native ()

    gboolean            g_socket_address_to_native          (GSocketAddress *address,
                                                             gpointer dest,
                                                             gsize destlen,
                                                             GError **error);

Converts a GSocketAddress to a native struct sockaddr, which can be passed to low-level functions like `connect()` or `bind()`.

If not enough space is availible, a `G_IO_ERROR_NO_SPACE` error is returned. If the address type is not known on the system then a `G_IO_ERROR_NOT_SUPPORTED` error is returned.

`address` : | a GSocketAddress
`dest` : | a pointer to a memory location that will contain the native struct sockaddr.
`destlen` : | the size of `dest`. Must be at least as large as `g_socket_address_get_native_size()`.
`error` : | GError for error reporting, or `NULL` to ignore.
Returns : | `TRUE` if `dest` was filled in, `FALSE` on error

Since 2.22

### g_socket_address_get_native_size ()

    gssize              g_socket_address_get_native_size    (GSocketAddress *address);

Gets the size of `address`'s native struct sockaddr. You can use this to allocate memory to pass to `g_socket_address_to_native()`.

`address` : | a GSocketAddress
Returns : | the size of the native struct sockaddr that `address` represents

Since 2.22

## Property Details

### The `"family"` property

      "family"                   GSocketFamily         : Read

The family of the socket address.

Default value: G_SOCKET_FAMILY_INVALID