Gio.NetworkMonitor¶
interface
GNetworkMonitor provides an easy-to-use cross-platform API
for monitoring network connectivity. On Linux, the available
implementations are based on the kernel's netlink interface and
on NetworkManager.
There is also an implementation for use inside Flatpak sandboxes.
Methods¶
can_reach¶
Attempts to determine whether or not the host pointed to by
connectable can be reached, without actually trying to connect to
it.
This may return True even when NetworkMonitor:network-available
is False, if, for example, monitor can determine that
connectable refers to a host on a local network.
If monitor believes that an attempt to connect to connectable
will succeed, it will return True. Otherwise, it will return
False and set error to an appropriate error (such as
IOErrorEnum.HOST_UNREACHABLE).
Note that although this does not attempt to connect to
connectable, it may still block for a brief period of time (eg,
trying to do multicast DNS on the local network), so if you do not
want to block, you should use NetworkMonitor.can_reach_async.
Parameters:
connectable— aSocketConnectablecancellable— aCancellable, orNone
can_reach_async¶
def can_reach_async(self, connectable: SocketConnectable, cancellable: Cancellable | None = ..., callback: Callable[[NetworkMonitor | None, AsyncResult], None] | None = ...) -> None
Asynchronously attempts to determine whether or not the host
pointed to by connectable can be reached, without actually
trying to connect to it.
For more details, see NetworkMonitor.can_reach.
When the operation is finished, callback will be called.
You can then call NetworkMonitor.can_reach_finish
to get the result of the operation.
Parameters:
connectable— aSocketConnectablecancellable— aCancellable, orNonecallback— aGAsyncReadyCallbackto call when the request is satisfied
can_reach_finish¶
Finishes an async network connectivity test.
See NetworkMonitor.can_reach_async.
Parameters:
result— aAsyncResult
get_connectivity¶
Gets a more detailed networking state than
NetworkMonitor.get_network_available.
If NetworkMonitor:network-available is False, then the
connectivity state will be NetworkConnectivity.LOCAL.
If NetworkMonitor:network-available is True, then the
connectivity state will be NetworkConnectivity.FULL (if there
is full Internet connectivity), NetworkConnectivity.LIMITED (if
the host has a default route, but appears to be unable to actually
reach the full Internet), or NetworkConnectivity.PORTAL (if the
host is trapped behind a "captive portal" that requires some sort
of login or acknowledgement before allowing full Internet access).
Note that in the case of NetworkConnectivity.LIMITED and
NetworkConnectivity.PORTAL, it is possible that some sites are
reachable but others are not. In this case, applications can
attempt to connect to remote servers, but should gracefully fall
back to their "offline" behavior if the connection attempt fails.
get_network_available¶
Checks if the network is available. "Available" here means that the
system has a default route available for at least one of IPv4 or
IPv6. It does not necessarily imply that the public Internet is
reachable. See NetworkMonitor:network-available for more details.
get_network_metered¶
Checks if the network is metered.
See NetworkMonitor:network-metered for more details.
Static functions¶
get_default¶
Gets the default NetworkMonitor for the system.
Virtual methods¶
do_can_reach¶
def do_can_reach(self, connectable: SocketConnectable, cancellable: Cancellable | None = ...) -> bool
Attempts to determine whether or not the host pointed to by
connectable can be reached, without actually trying to connect to
it.
This may return True even when NetworkMonitor:network-available
is False, if, for example, monitor can determine that
connectable refers to a host on a local network.
If monitor believes that an attempt to connect to connectable
will succeed, it will return True. Otherwise, it will return
False and set error to an appropriate error (such as
IOErrorEnum.HOST_UNREACHABLE).
Note that although this does not attempt to connect to
connectable, it may still block for a brief period of time (eg,
trying to do multicast DNS on the local network), so if you do not
want to block, you should use NetworkMonitor.can_reach_async.
Parameters:
connectable— aSocketConnectablecancellable— aCancellable, orNone
do_can_reach_async¶
def do_can_reach_async(self, connectable: SocketConnectable, cancellable: Cancellable | None = ..., callback: Callable[[NetworkMonitor | None, AsyncResult], None] | None = ...) -> None
Asynchronously attempts to determine whether or not the host
pointed to by connectable can be reached, without actually
trying to connect to it.
For more details, see NetworkMonitor.can_reach.
When the operation is finished, callback will be called.
You can then call NetworkMonitor.can_reach_finish
to get the result of the operation.
Parameters:
connectable— aSocketConnectablecancellable— aCancellable, orNonecallback— aGAsyncReadyCallbackto call when the request is satisfied
do_can_reach_finish¶
Finishes an async network connectivity test.
See NetworkMonitor.can_reach_async.
Parameters:
result— aAsyncResult
do_network_changed¶
the virtual function pointer for the GNetworkMonitor::network-changed signal.
Properties¶
connectivity¶
More detailed information about the host's network connectivity.
See NetworkMonitor.get_connectivity and
NetworkConnectivity for more details.
network_available¶
Whether the network is considered available. That is, whether the system has a default route for at least one of IPv4 or IPv6.
Real-world networks are of course much more complicated than
this; the machine may be connected to a wifi hotspot that
requires payment before allowing traffic through, or may be
connected to a functioning router that has lost its own upstream
connectivity. Some hosts might only be accessible when a VPN is
active. Other hosts might only be accessible when the VPN is
not active. Thus, it is best to use NetworkMonitor.can_reach
or NetworkMonitor.can_reach_async to test for reachability
on a host-by-host basis. (On the other hand, when the property is
False, the application can reasonably expect that no remote
hosts at all are reachable, and should indicate this to the user
in its UI.)
See also NetworkMonitor::network-changed.
network_metered¶
Whether the network is considered metered.
That is, whether the system has traffic flowing through the default connection that is subject to limitations set by service providers. For example, traffic might be billed by the amount of data transmitted, or there might be a quota on the amount of traffic per month. This is typical with tethered connections (3G and 4G) and in such situations, bandwidth intensive applications may wish to avoid network activity where possible if it will cost the user money or use up their limited quota. Anything more than a few hundreds of kilobytes of data usage per hour should be avoided without asking permission from the user.
If more information is required about specific devices then the system network management API should be used instead (for example, NetworkManager or ConnMan).
If this information is not available then no networks will be marked as metered.
See also NetworkMonitor:network-available.
Signals¶
network-changed¶
Emitted when the network configuration changes.