请写一个使用GSocket接收数据的例子
时间: 2024-03-23 12:38:46 浏览: 18
好的,以下是一个使用GSocket接收数据的示例程序:
```c
#include <gio/gio.h>
#include <stdio.h>
int main(int argc, char* argv[])
{
GError* error = NULL;
GSocket* socket = NULL;
GSocketAddress* address = NULL;
gchar buffer[1024];
gssize bytes_received = 0;
// 创建一个IPv4 TCP套接字
socket = g_socket_new(G_SOCKET_FAMILY_IPV4, G_SOCKET_TYPE_STREAM, G_SOCKET_PROTOCOL_TCP, &error);
if (error) {
g_print("Error creating socket: %s\n", error->message);
g_error_free(error);
return 1;
}
// 用地址和端口号创建一个网络地址结构体
address = g_inet_socket_address_new_from_string("127.0.0.1", 1234);
// 连接到服务器
if (!g_socket_connect(socket, address, NULL, &error)) {
g_print("Error connecting to server: %s\n", error->message);
g_error_free(error);
return 1;
}
// 从套接字接收数据
bytes_received = g_socket_receive(socket, buffer, sizeof(buffer), NULL, &error);
if (error) {
g_print("Error receiving data: %s\n", error->message);
g_error_free(error);
return 1;
}
// 打印接收到的数据
g_print("Received %zd bytes: %s\n", bytes_received, buffer);
// 关闭套接字和其他资源
g_object_unref(socket);
g_object_unref(address);
return 0;
}
```
这个程序创建了一个IPv4 TCP套接字,连接到指定的服务器地址和端口,然后从套接字接收数据并打印出来。注意,这个程序只接收了一次数据,如果需要连续接收数据,可以在一个循环中调用`g_socket_receive`。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)