Gio.UnixSocketAddress¶
class — extends SocketAddress, SocketConnectable
Support for UNIX-domain (also known as local) sockets, corresponding to
struct sockaddr_un.
UNIX domain sockets are generally visible in the filesystem.
However, some systems support abstract socket names which are not
visible in the filesystem and not affected by the filesystem
permissions, visibility, etc. Currently this is only supported
under Linux. If you attempt to use abstract sockets on other
systems, function calls may return G_IO_ERROR_NOT_SUPPORTED
errors. You can use UnixSocketAddress.abstract_names_supported
to see if abstract names are supported.
Since GLib 2.72, GUnixSocketAddress is available on all platforms. It
requires underlying system support (such as Windows 10 with AF_UNIX) at
run time.
Before GLib 2.72, <gio/gunixsocketaddress.h> belonged to the UNIX-specific
GIO interfaces, thus you had to use the gio-unix-2.0.pc pkg-config file
when using it. This is no longer necessary since GLib 2.72.
Constructors¶
new¶
Creates a new UnixSocketAddress for path.
To create abstract socket addresses, on systems that support that,
use UnixSocketAddress.new_abstract.
Parameters:
path— the socket path
new_abstract¶
:::warning Deprecated This API is deprecated. :::
Creates a new UnixSocketAddressType.ABSTRACT_PADDED
UnixSocketAddress for path.
Parameters:
path— the abstract name
new_with_type¶
@classmethod
def new_with_type(cls, path: list[int], type: UnixSocketAddressType | int) -> SocketAddress
Creates a new UnixSocketAddress of type type with name path.
If type is UnixSocketAddressType.PATH, this is equivalent to
calling UnixSocketAddress.new.
If type is UnixSocketAddressType.ANONYMOUS, path and path_len will be
ignored.
If path_type is UnixSocketAddressType.ABSTRACT, then path_len
bytes of path will be copied to the socket's path, and only those
bytes will be considered part of the name. (If path_len is -1,
then path is assumed to be NUL-terminated.) For example, if path
was "test", then calling SocketAddress.get_native_size on the
returned socket would return 7 (2 bytes of overhead, 1 byte for the
abstract-socket indicator byte, and 4 bytes for the name "test").
If path_type is UnixSocketAddressType.ABSTRACT_PADDED, then
path_len bytes of path will be copied to the socket's path, the
rest of the path will be padded with 0 bytes, and the entire
zero-padded buffer will be considered the name. (As above, if
path_len is -1, then path is assumed to be NUL-terminated.) In
this case, SocketAddress.get_native_size will always return
the full size of a struct sockaddr_un, although
UnixSocketAddress.get_path_len will still return just the
length of path.
UnixSocketAddressType.ABSTRACT is preferred over
UnixSocketAddressType.ABSTRACT_PADDED for new programs. Of course,
when connecting to a server created by another process, you must
use the appropriate type corresponding to how that process created
its listening socket.
Parameters:
path— the nametype— aUnixSocketAddressType
Methods¶
get_address_type¶
Gets address's type.
get_is_abstract¶
:::warning Deprecated This API is deprecated. :::
Tests if address is abstract.
get_path¶
Gets address's path, or for abstract sockets the "name".
Guaranteed to be zero-terminated, but an abstract socket
may contain embedded zeros, and thus you should use
UnixSocketAddress.get_path_len to get the true length
of this string.
get_path_len¶
Gets the length of address's path.
For details, see UnixSocketAddress.get_path.
Static functions¶
abstract_names_supported¶
Checks if abstract UNIX domain socket names are supported.
Properties¶
abstract¶
:::warning Deprecated This API is deprecated. :::
Whether or not this is an abstract address
address_type¶
The type of Unix socket address.
path¶
Unix socket path.
path_as_array¶
Unix socket path, as a byte array.