### Class

# Gio SocketListener

since: 2.22

#### Description

    class Gio.SocketListener : GObject.Object
    {
      priv: GSocketListenerPrivate*
    }

A `GSocketListener` is an object that keeps track of a set of server sockets and helps you accept sockets from any of the socket, either sync or async.

Add addresses and ports to listen on using `g_socket_listener_add_address()` and `g_socket_listener_add_inet_port()`. These will be listened on until `g_socket_listener_close()` is called. Dropping your final reference to the `GSocketListener` will not cause `g_socket_listener_close()` to be called implicitly, as some references to the `GSocketListener` may be held internally.

If you want to implement a network server, also look at `GSocketService` and `GThreadedSocketService` which are subclasses of `GSocketListener` that make this even easier.

Available since: 2.22

#### Ancestors

- GObject

#### Descendants

- GSocketService

#### Constructors

###### g_socket_listener_new

Creates a new `GSocketListener` with no sockets to listen for. New listeners can be added with e.g. `g_socket_listener_add_address()` or g_socket_listener_add_inet_port().

since: 2.22

#### Instance methods

###### g_socket_listener_accept

Blocks waiting for a client to connect to any of the sockets added to the listener. Returns a `GSocketConnection` for the socket that was accepted.

since: 2.22

###### g_socket_listener_accept_async

This is the asynchronous version of g_socket_listener_accept().

since: 2.22

###### g_socket_listener_accept_finish

Finishes an async accept operation. See `g_socket_listener_accept_async()`

since: 2.22

###### g_socket_listener_accept_socket

Blocks waiting for a client to connect to any of the sockets added to the listener. Returns the `GSocket` that was accepted.

since: 2.22

###### g_socket_listener_accept_socket_async

This is the asynchronous version of g_socket_listener_accept_socket().

since: 2.22

###### g_socket_listener_accept_socket_finish

Finishes an async accept operation. See `g_socket_listener_accept_socket_async()`

since: 2.22

###### g_socket_listener_add_address

Creates a socket of type `type` and protocol `protocol`, binds it to `address` and adds it to the set of sockets we’re accepting sockets from.

since: 2.22

###### g_socket_listener_add_any_inet_port

Listens for TCP connections on any available port number for both IPv6 and IPv4 (if each is available).

since: 2.24

###### g_socket_listener_add_inet_port

Helper function for `g_socket_listener_add_address()` that creates a TCP/IP socket listening on IPv4 and IPv6 (if supported) on the specified port on all interfaces.

since: 2.22

###### g_socket_listener_add_socket

Adds `socket` to the set of sockets that we try to accept new clients from. The socket must be bound to a local address and listened to.

since: 2.22

###### g_socket_listener_close

Closes all the sockets in the listener.

since: 2.22

###### g_socket_listener_set_backlog

Sets the listen backlog on the sockets in the listener. This must be called before adding any sockets, addresses or ports to the `GSocketListener` (for example, by calling g_socket_listener_add_inet_port()) to be effective.

since: 2.22

##### Methods inherited from GObject (43)

Please see GObject for a full list of methods.

#### Properties

###### Gio.SocketListener:listen-backlog

The number of outstanding connections in the listen queue.

since: 2.22

#### Signals

###### Gio.SocketListener::event

Emitted when `listener`‘s activity on `socket` changes state. Note that when `listener` is used to listen on both IPv4 and IPv6, a separate set of signals will be emitted for each, and the order they happen in is undefined.

since: 2.46

##### Signals inherited from GObject (1)

###### GObject::notify

The notify signal is emitted on an object when one of its properties has its value set through g_object_set_property(), g_object_set(), et al.

since: 2.0

#### Class structure

    struct GioSocketListenerClass {
      GObjectClass parent_class;
      void (* changed) (
        GSocketListener* listener
      );
      void (* event) (
        GSocketListener* listener,
        GSocketListenerEvent event,
        GSocket* socket
      );
      void (* _g_reserved2) (
    void
      );
      void (* _g_reserved3) (
    void
      );
      void (* _g_reserved4) (
    void
      );
      void (* _g_reserved5) (
    void
      );
      void (* _g_reserved6) (
    void
      );

    }

Class structure for `GSocketListener`.

###### Class members

`parent_class: GObjectClass`
  No description available.
`changed: void (* changed) ( GSocketListener* listener )`

  Virtual method called when the set of socket listened to changes.

`event: void (* event) ( GSocketListener* listener, GSocketListenerEvent event, GSocket* socket )`
  No description available.
`_g_reserved2: void (* _g_reserved2) ( void )`
  No description available.
`_g_reserved3: void (* _g_reserved3) ( void )`
  No description available.
`_g_reserved4: void (* _g_reserved4) ( void )`
  No description available.
`_g_reserved5: void (* _g_reserved5) ( void )`
  No description available.
`_g_reserved6: void (* _g_reserved6) ( void )`
  No description available.

#### Virtual methods

###### Gio.SocketListenerClass.changed

Virtual method called when the set of socket listened to changes.

since: 2.0

###### Gio.SocketListenerClass.event

No description available.

since: 2.0