请写一个g_socket_client_connect_to_host_async 的使用示例
时间: 2023-08-02 08:05:53 浏览: 56
好的,这是一个简单的使用示例:
```c
#include <gio/gio.h>
static void on_socket_connected(GObject *source_object, GAsyncResult *res, gpointer user_data) {
GSocketConnection *connection = g_socket_client_connect_to_host_finish(G_SOCKET_CLIENT(source_object), res, NULL);
if (connection) {
// 连接成功
g_print("Socket connected\n");
// 在这里可以进行读写操作
} else {
// 连接失败
g_print("Failed to connect to host\n");
}
}
int main(int argc, char *argv[]) {
GError *error = NULL;
GSocketClient *client = g_socket_client_new();
GSocketAddress *address = g_inet_socket_address_new_from_string("127.0.0.1", 1234);
g_socket_client_connect_to_host_async(client, address, NULL, on_socket_connected, NULL);
g_object_unref(address);
g_main_loop_run(g_main_loop_new(NULL, FALSE));
g_object_unref(client);
return 0;
}
```
在这个例子中,我们首先创建了一个`GSocketClient`对象。然后,我们创建了一个`GSocketAddress`对象,表示要连接的主机地址和端口。我们使用`g_socket_client_connect_to_host_async`函数发起异步连接请求,当连接成功或失败时,会调用`on_socket_connected`回调函数。在回调函数中,我们可以检查连接是否成功,并执行必要的读写操作。
最后,我们使用`g_main_loop_run`函数进入事件循环,等待异步操作完成。当连接成功或失败时,事件循环会自动退出。
阅读全文