## GSrvTarget

GSrvTarget — DNS SRV record target

## Synopsis

    #include <gio/gio.h>

                        GSrvTarget;
    GSrvTarget *        g_srv_target_new                    (const gchar *hostname,
                                                             guint16 port,
                                                             guint16 priority,
                                                             guint16 weight);
    GSrvTarget *        g_srv_target_copy                   (GSrvTarget *target);
    void                g_srv_target_free                   (GSrvTarget *target);
    const gchar *       g_srv_target_get_hostname           (GSrvTarget *target);
    guint16             g_srv_target_get_port               (GSrvTarget *target);
    guint16             g_srv_target_get_priority           (GSrvTarget *target);
    guint16             g_srv_target_get_weight             (GSrvTarget *target);
    GList *             g_srv_target_list_sort              (GList *targets);

## 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.

## Details

### GSrvTarget

    typedef struct _GSrvTarget GSrvTarget;

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

### 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.

`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`

`target` : | a GSrvTarget
Returns : | a copy of `target`

Since 2.22

### g_srv_target_free ()

    void                g_srv_target_free                   (GSrvTarget *target);

Frees `target`

`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.)

`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

`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.

`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.

`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.

`targets` : | a GList of GSrvTarget
Returns : | the head of the sorted list.

Since 2.22