写一个使用GSocket发送tcp数据的例子,要有socket错误处理
时间: 2024-04-06 20:35:01 浏览: 83
好的,以下是一个使用GSocket发送TCP数据的例子,代码中还包含了socket错误处理:
```c
#include <stdio.h>
#include <glib.h>
#include <gio/gio.h>
int main(int argc, char *argv[]) {
gchar *host = "localhost"; // 目标主机地址
gint port = 8888; // 目标主机端口
// 创建socket客户端
GSocketClient *client = g_socket_client_new();
GError *error = NULL;
GSocketConnection *connection = NULL;
GOutputStream *ostream = NULL;
// 连接服务器
connection = g_socket_client_connect_to_host(client, host, port, NULL, &error);
if (error != NULL) {
g_print("Error: %s\n", error->message);
g_error_free(error);
return -1;
}
// 获取输出流
ostream = g_io_stream_get_output_stream(G_IO_STREAM(connection));
// 发送数据
gchar *message = "Hello, server!";
gsize message_len = strlen(message);
gssize bytes_written = g_output_stream_write(ostream, message, message_len, NULL, &error);
if (error != NULL) {
g_print("Error: %s\n", error->message);
g_error_free(error);
return -1;
}
g_print("Sent %zd bytes: %s\n", bytes_written, message);
// 关闭连接
g_object_unref(ostream);
g_object_unref(connection);
g_object_unref(client);
return 0;
}
```
其中,我们使用了 `GSocketClient` 创建socket客户端,使用 `g_socket_client_connect_to_host` 连接服务器,并获取输出流 `GOutputStream` 发送数据。在发送数据时,我们使用了 `g_output_stream_write` 函数。
在这个例子中,我们还对 `g_socket_client_connect_to_host` 和 `g_output_stream_write` 函数的返回值进行了错误处理,并将错误信息输出到控制台。
阅读全文