使用gsocket写一个可靠的TCP建链示例
时间: 2023-07-20 11:33:48 浏览: 139
基于tcp的socket编程实例
3星 · 编辑精心推荐
好的,我可以为您提供一个使用 GSocket 库编写可靠的 TCP 建立连接的示例代码。请注意,GSocket 是基于 GLib 的封装库,它提供了一些更加高级和简单的网络编程接口。
下面是一个简单的 TCP 建立连接的示例代码:
```c
#include <gio/gio.h>
int main(int argc, char *argv[]) {
GError *error = NULL;
GSocketClient *client = g_socket_client_new();
GSocketConnection *connection = g_socket_client_connect_to_host(
client, "127.0.0.1", 8888, NULL, &error);
if (error != NULL) {
g_print("Error: %s\n", error->message);
g_error_free(error);
return -1;
}
// 连接成功,发送数据
const char *message = "Hello, server!";
gssize bytes_written = g_socket_connection_write(
connection, message, strlen(message), NULL, &error);
if (error != NULL) {
g_print("Error: %s\n", error->message);
g_error_free(error);
return -1;
}
// 接收数据
char buffer[1024];
gssize bytes_read = g_socket_connection_read(
connection, buffer, sizeof(buffer), NULL, &error);
if (error != NULL) {
g_print("Error: %s\n", error->message);
g_error_free(error);
return -1;
}
g_print("Received: %.*s\n", (int)bytes_read, buffer);
// 关闭连接
g_object_unref(connection);
g_object_unref(client);
return 0;
}
```
这段代码通过 GSocketClient 和 GSocketConnection 提供的高级接口,实现了 TCP 建立连接的功能,同时还能够处理异常情况。在实际使用中,还需要根据具体需求进行调整和优化。
阅读全文