Class NetworkAddress

All Implemented Interfaces:
PointerInterface

public class NetworkAddress extends Object
#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.

The enumeration results of resolved addresses *may* be cached as long
as this object is kept alive which may have unexpected results if
alive for too long.

See #GSocketConnectable for an example of using the connectable
interface.

https://docs.gtk.org/gio/class.NetworkAddress.html

  • Constructor Details

    • NetworkAddress

      public NetworkAddress(PointerContainer pointer)
    • NetworkAddress

      public NetworkAddress(@Nonnull Str hostname, int port)
      Creates a new #GSocketConnectable for connecting to the given
      @hostname and @port.

      Note that depending on the configuration of the machine, a
      @hostname of `localhost` may refer to the IPv4 loopback address
      only, or to both IPv4 and IPv6; use
      g_network_address_new_loopback() to create a #GNetworkAddress that
      is guaranteed to resolve to both addresses.
      Parameters:
      hostname - the hostname
      port - the port
    • NetworkAddress

      public NetworkAddress(String hostname, int port)
      Creates a new #GSocketConnectable for connecting to the given
      @hostname and @port.

      Note that depending on the configuration of the machine, a
      @hostname of `localhost` may refer to the IPv4 loopback address
      only, or to both IPv4 and IPv6; use
      g_network_address_new_loopback() to create a #GNetworkAddress that
      is guaranteed to resolve to both addresses.
      Parameters:
      hostname - the hostname
      port - the port
  • Method Details

    • getClassHandler

      public static ClassHandler getClassHandler()
    • newLoopbackNetworkAddress

      public static NetworkAddress newLoopbackNetworkAddress(int port)
      Creates a new #GSocketConnectable for connecting to the local host
      over a loopback connection to the given @port. This is intended for
      use in connecting to local services which may be running on IPv4 or
      IPv6.

      The connectable will return IPv4 and IPv6 loopback addresses,
      regardless of how the host resolves `localhost`. By contrast,
      g_network_address_new() will often only return an IPv4 address when
      resolving `localhost`, and an IPv6 address for `localhost6`.

      g_network_address_get_hostname() will always return `localhost` for
      a #GNetworkAddress created with this constructor.
      Parameters:
      port - the port
      Returns:
      the new #GNetworkAddress
    • getHostname

      public Str getHostname()
      Gets @addr's hostname. This might be either UTF-8 or ASCII-encoded,
      depending on what @addr was created with.
      Returns:
      @addr's hostname
    • getPort

      public int getPort()
      Gets @addr's port number
      Returns:
      @addr's port (which may be 0)
    • getScheme

      public Str getScheme()
      Gets @addr's scheme
      Returns:
      @addr's scheme (%NULL if not built from URI)
    • parse

      public static NetworkAddress parse(@Nonnull Str host_and_port, int default_port) throws AllocationError
      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.

      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 override if necessary)
      and @default_port is expected to be provided by the application.

      (The port component of @host_and_port can also be specified as a
      service name rather than as a numeric port, but this functionality
      is deprecated, because it depends on the contents of /etc/services,
      which is generally quite sparse on platforms other than Linux.)
      Parameters:
      host_and_port - the hostname and optionally a port
      default_port - the default port if not in @host_and_port
      Returns:
      the new #GNetworkAddress, or %NULL on error
      Throws:
      AllocationError
    • parseUri

      public static NetworkAddress parseUri(@Nonnull Str uri, int default_port) throws AllocationError
      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() allows #GSocketClient to determine
      when to use application-specific proxy protocols.
      Parameters:
      uri - the hostname and optionally a port
      default_port - The default port if none is found in the URI
      Returns:
      the new #GNetworkAddress, or %NULL on error
      Throws:
      AllocationError
    • asSocketConnectable

      public SocketConnectable asSocketConnectable()
      Implements interface SocketConnectable. Call this to get access to interface functions.
      Returns:
      SocketConnectable
    • getTypeID

      public static long getTypeID()
    • getParentTypeID

      public static long getParentTypeID()
    • getTypeSize

      public static TypeSystem.TypeSize getTypeSize()
    • getParentTypeSize

      public static TypeSystem.TypeSize getParentTypeSize()
    • getInstanceSize

      public static int getInstanceSize()