## GNetworkAddress

GNetworkAddress — A GSocketConnectable for resolving hostnames

## Synopsis

    #include <gio/gio.h>

                        GNetworkAddress;
    GSocketConnectable * g_network_address_new              (const gchar *hostname,
                                                             guint16 port);
    const gchar *       g_network_address_get_hostname      (GNetworkAddress *addr);
    guint16             g_network_address_get_port          (GNetworkAddress *addr);
    const gchar *       g_network_address_get_scheme        (GNetworkAddress *addr);
    GSocketConnectable * g_network_address_parse            (const gchar *host_and_port,
                                                             guint16 default_port,
                                                             GError **error);
    GSocketConnectable * g_network_address_parse_uri        (const gchar *uri,
                                                             guint16 default_port,
                                                             GError **error);

## Object Hierarchy

      GObject
       +----GNetworkAddress

## Implemented Interfaces

GNetworkAddress implements GSocketConnectable.

## Properties

      "hostname"                 gchar*                : Read / Write / Construct Only
      "port"                     guint                 : Read / Write / Construct Only
      "scheme"                   gchar*                : Read / Write / Construct Only

## Description

GNetworkAddress provides an easy way to resolve a hostname and then attempt to connect to that host, handling the possibility of multiple IP addresses and multiple address families.

See GSocketConnectable for and example of using the connectable interface.

## Details

### GNetworkAddress

    typedef struct _GNetworkAddress GNetworkAddress;

A GSocketConnectable for resolving a hostname and connecting to that host.

### g_network_address_new ()

    GSocketConnectable * g_network_address_new              (const gchar *hostname,
                                                             guint16 port);

Creates a new GSocketConnectable for connecting to the given `hostname` and `port`.

`hostname` : | the hostname
`port` : | the port
Returns : | the new GNetworkAddress

Since 2.22

### g_network_address_get_hostname ()

    const gchar *       g_network_address_get_hostname      (GNetworkAddress *addr);

Gets `addr`'s hostname. This might be either UTF-8 or ASCII-encoded, depending on what `addr` was created with.

`addr` : | a GNetworkAddress
Returns : | `addr`'s hostname

Since 2.22

### g_network_address_get_port ()

    guint16             g_network_address_get_port          (GNetworkAddress *addr);

Gets `addr`'s port number

`addr` : | a GNetworkAddress
Returns : | `addr`'s port (which may be 0)

Since 2.22

### g_network_address_get_scheme ()

    const gchar *       g_network_address_get_scheme        (GNetworkAddress *addr);

Gets `addr`'s scheme

`addr` : | a GNetworkAddress
Returns : | `addr`'s scheme (`NULL` if not built from URI)

Since 2.26

### g_network_address_parse ()

    GSocketConnectable * g_network_address_parse            (const gchar *host_and_port,
                                                             guint16 default_port,
                                                             GError **error);

Creates a new GSocketConnectable for connecting to the given `hostname` and `port`. May fail and return `NULL` in case parsing `host_and_port` fails.

`host_and_port` may be in any of a number of recognised formats: an IPv6 address, an IPv4 address, or a domain name (in which case a DNS lookup is performed). Quoting with [] is supported for all address types. A port override may be specified in the usual way with a colon. Ports may be given as decimal numbers or symbolic names (in which case an /etc/services lookup is performed).

If no port is specified in `host_and_port` then `default_port` will be used as the port number to connect to.

In general, `host_and_port` is expected to be provided by the user (allowing them to give the hostname, and a port overide if necessary) and `default_port` is expected to be provided by the application.

`host_and_port` : | the hostname and optionally a port
`default_port` : | the default port if not in `host_and_port`
`error` : | a pointer to a GError, or `NULL`
Returns : | the new GNetworkAddress, or `NULL` on error

Since 2.22

### g_network_address_parse_uri ()

    GSocketConnectable * g_network_address_parse_uri        (const gchar *uri,
                                                             guint16 default_port,
                                                             GError **error);

Creates a new GSocketConnectable for connecting to the given `uri`. May fail and return `NULL` in case parsing `uri` fails.

Using this rather than `g_network_address_new()` or `g_network_address_parse_host()` allows GSocketClient to determine when to use application-specific proxy protocols.

`uri` : | the hostname and optionally a port
`default_port` : | The default port if none is found in the URI
`error` : | a pointer to a GError, or `NULL`
Returns : | the new GNetworkAddress, or `NULL` on error

Since 2.26

## Property Details

### The `"hostname"` property

      "hostname"                 gchar*                : Read / Write / Construct Only

Hostname to resolve.

Default value: NULL

### The `"port"` property

      "port"                     guint                 : Read / Write / Construct Only

Network port.

Allowed values: <= 65535

Default value: 0

### The `"scheme"` property

      "scheme"                   gchar*                : Read / Write / Construct Only

URI Scheme.

Default value: NULL