类
GioSocketService
since: 2.22
说明 [src]
class Gio.SocketService : Gio.SocketListener
{
priv: GSocketServicePrivate*
}
GSocketService
是表示是为网络提供还是通过本地套接字提供服务的对象的 服务。
GSocketService
是 GSocketListener
的子类,您需要使用 GSocketListener
API 添加希望接受连接的地址。
有两种基于 GSocketService
实现网络服务的方法。首先,使用 g_socket_service_new()
创建服务,并连接到 GSocketService::incoming
信号。第二种方法是构造 GSocketService
的子类并覆盖默认信号处理程序 实现。
在任何情况下,处理程序都必须立即返回,否则将阻止处理其他传入连接。如果您有兴趣编写包含阻止代码的连接处理程序,请参见 GThreadedSocketService
。
套接字服务在创建线程的主循环中运行(请参见 g_main_context_push_thread_default()
),并且通常不是线程安全的。但是,启动和停止服务的调用是线程安全的,因此可以从处理传入 客户端的线程中使用这些调用。
从 2.22 开始提供
构造函数
g_socket_service_new
不创建需要侦听的套接字,创建一个新的 GSocketService
。可以使用例如 g_socket_listener_add_address()
或 g_socket_listener_add_inet_port() 添加新侦听器。
since: 2.22
实例方法
g_socket_service_is_active
检查服务是否处于活动状态。处于活动状态的服务将接受连接的新客户端,而处于非活动状态的服务将让连接中的客户端排队,直到服务 启动。
since: 2.22
g_socket_service_start
重新启动服务,即在主循环运行时从已添加的套接字开始接受连接。仅在由 g_socket_service_stop() 停止服务之后才需要调用此函数。
since: 2.22
从 GSocketListener (12) 继承的方法
g_socket_listener_accept
阻塞,等待客户端连接到添加到侦听器的任何套接字。返回针对已 接受的套接字的 GSocketConnection
。
since: 2.22
g_socket_listener_accept_async
这是 g_socket_listener_accept() 的异步版本。
since: 2.22
g_socket_listener_accept_finish
完成异步接受操作。请参见 g_socket_listener_accept_async()。
since: 2.22
g_socket_listener_accept_socket
阻塞,等待客户端连接到添加到侦听器的任何套接字。返回已 接受的 GSocket
。
since: 2.22
g_socket_listener_accept_socket_async
这是 g_socket_listener_accept_socket() 的异步版本。
since: 2.22
g_socket_listener_accept_socket_finish
完成异步接受操作。请参阅 g_socket_listener_accept_socket_async()。
since: 2.22
g_socket_listener_add_address
创建类型为 type
且协议为 protocol
的套接字,将其绑定到 address
,并将其添加到我们接受套接字的套接字集中。
since: 2.22
g_socket_listener_add_any_inet_port
在任何可用的端口号上侦听 IPv6 和 IPv4(如果每个都可用)的 TCP 连接。
自:2.24
g_socket_listener_add_inet_port
g_socket_listener_add_address()
的帮助函数,它在所有接口上的指定端口上创建在 IPv4 和 IPv6(如果受支持)上侦听的 TCP/IP 套接字。
since: 2.22
g_socket_listener_add_socket
将 socket
添加到我们尝试接受新客户端的套接字集中。该套接字应绑定到本地地址并被侦听。
since: 2.22
g_socket_listener_close
关闭侦听器中的所有套接字。
since: 2.22
g_socket_listener_set_backlog
设置监听器中套接字的监听积压。在将任何套接字、地址或端口添加到 GSocketListener
(例如通过调用 g_socket_listener_add_inet_port())之前,必须调用此函数才能生效。
since: 2.22
信号
Gio.SocketService::incoming
当需要处理与 service
的新传入连接时,将发出 ::incoming 信号。处理程序必须启动对 connection
的处理,但不得阻塞;从本质上说,必须使用异步操作。
since: 2.22
从 GSocketListener (1) 继承的信号
GSocketListener::event
当 listener
在 socket
上的活动改变状态时发出的信号。请注意,当 listener
用于同时侦听 IPv4 和 IPv6 时,将为每个活动发出单独的信号集,并且发生的顺序是不确定的。
自:2.46
从 GObject (1) 继承的信号
GObject::notify
当对象的某个属性的值通过 g_object_set_property()、g_object_set() 等函数设置时,会发出 notify 信号。
类结构
struct GioSocketServiceClass {
GSocketListenerClass parent_class;
gboolean (* incoming) (
GSocketService* service,
GSocketConnection* connection,
GObject* source_object
);
void (* _g_reserved1) (
void
);
void (* _g_reserved2) (
void
);
void (* _g_reserved3) (
void
);
void (* _g_reserved4) (
void
);
void (* _g_reserved5) (
void
);
void (* _g_reserved6) (
void
);
}
GSocketService
的类结构。
类成员
parent_class: GSocketListenerClass
无可用描述。
incoming: gboolean (* incoming) ( GSocketService* service, GSocketConnection* connection, GObject* source_object )
当接受新连接时发出的信号。
_g_reserved1: void (* _g_reserved1) ( void )
无可用描述。
_g_reserved2: void (* _g_reserved2) ( void )
无可用描述。
_g_reserved3: void (* _g_reserved3) ( void )
无可用描述。
_g_reserved4: void (* _g_reserved4) ( void )
无可用描述。
_g_reserved5: void (* _g_reserved5) ( void )
无可用描述。
_g_reserved6: void (* _g_reserved6) ( void )
无可用描述。