## GSrvTarget

GSrvTarget — DNS SRV record target

## Functions

GSrvTarget * | g_srv_target_new ()
GSrvTarget * | g_srv_target_copy ()
void | g_srv_target_free ()
const gchar * | g_srv_target_get_hostname ()
guint16 | g_srv_target_get_port ()
guint16 | g_srv_target_get_priority ()
guint16 | g_srv_target_get_weight ()
GList * | g_srv_target_list_sort ()

## Types and Values

| GSrvTarget

## Object Hierarchy

        GBoxed
        ╰── GSrvTarget

## Includes

    #include <gio/gio.h>

## Description

SRV (service) records are used by some network protocols to provide service-specific aliasing and load-balancing. For example, XMPP (Jabber) uses SRV records to locate the XMPP server for a domain; rather than connecting directly to "example.com" or assuming a specific server hostname like "xmpp.example.com", an XMPP client would look up the "xmpp-client" SRV record for "example.com", and then connect to whatever host was pointed to by that record.

You can use `g_resolver_lookup_service()` or `g_resolver_lookup_service_async()` to find the GSrvTargets for a given service. However, if you are simply planning to connect to the remote service, you can use GNetworkService's GSocketConnectable interface and not need to worry about GSrvTarget at all.

## Functions

### g_srv_target_new ()

    GSrvTarget *
    g_srv_target_new (const gchar *hostname,
                      guint16 port,
                      guint16 priority,
                      guint16 weight);

Creates a new GSrvTarget with the given parameters.

You should not need to use this; normally GSrvTargets are created by GResolver.

#### Parameters

hostname | the host that the service is running on |
port | the port that the service is running on |
priority | the target's priority |
weight | the target's weight |

#### Returns

a new GSrvTarget.

Since: 2.22

### g_srv_target_copy ()

    GSrvTarget *
    g_srv_target_copy (GSrvTarget *target);

Copies `target`

#### Parameters

target | a GSrvTarget |

#### Returns

a copy of `target`

Since: 2.22

### g_srv_target_free ()

    void
    g_srv_target_free (GSrvTarget *target);

Frees `target`

#### Parameters

target | a GSrvTarget |

Since: 2.22

### g_srv_target_get_hostname ()

    const gchar *
    g_srv_target_get_hostname (GSrvTarget *target);

Gets `target` 's hostname (in ASCII form; if you are going to present this to the user, you should use `g_hostname_is_ascii_encoded()` to check if it contains encoded Unicode segments, and use `g_hostname_to_unicode()` to convert it if it does.)

#### Parameters

target | a GSrvTarget |

#### Returns

`target` 's hostname

Since: 2.22

### g_srv_target_get_port ()

    guint16
    g_srv_target_get_port (GSrvTarget *target);

Gets `target` 's port

#### Parameters

target | a GSrvTarget |

#### Returns

`target` 's port

Since: 2.22

### g_srv_target_get_priority ()

    guint16
    g_srv_target_get_priority (GSrvTarget *target);

Gets `target` 's priority. You should not need to look at this; GResolver already sorts the targets according to the algorithm in RFC 2782.

#### Parameters

target | a GSrvTarget |

#### Returns

`target` 's priority

Since: 2.22

### g_srv_target_get_weight ()

    guint16
    g_srv_target_get_weight (GSrvTarget *target);

Gets `target` 's weight. You should not need to look at this; GResolver already sorts the targets according to the algorithm in RFC 2782.

#### Parameters

target | a GSrvTarget |

#### Returns

`target` 's weight

Since: 2.22

### g_srv_target_list_sort ()

    GList *
    g_srv_target_list_sort (GList *targets);

Sorts `targets` in place according to the algorithm in RFC 2782.

[skip]

#### Parameters

targets | a GList of GSrvTarget |

#### Returns

the head of the sorted list.

[transfer full]

Since: 2.22

## Types and Values

### GSrvTarget

    typedef struct _GSrvTarget GSrvTarget;

A single target host/port that a network service is running on.