c语言socket中recv
时间: 2024-10-19 11:03:40 浏览: 50
在C语言中,`recv` 函数是用于从网络连接接收数据的基本工具,它在 `<sys/socket.h>` 头文件中定义[^1]。该函数的主要作用是接收指定长度的数据到内存缓冲区 `buf`,通过给定的套接字描述符 `sockfd` 进行操作,参数说明如下:
- `int sockfd`: 要从中接收数据的套接字句柄。
- `void *buf`: 存储接收数据的目标地址,通常是应用程序分配的内存区域。
- `size_t len`: 指定要接收的最大字节数。
- `int flags`: 可选标志,如SOCK.MSG_PEEK(不真正接收数据但返回可用的数据)或MSG_DONTWAIT(非阻塞模式)。
下面是一个基本的 `recv` 函数使用示例[^2]:
```c
#include <sys/socket.h>
#include <netinet/in.h> // 对于 Internet 地址族
// 假设已经创建了一个套接字并设置了连接
struct sockaddr_in server_addr;
int sockfd;
// 接收数据
ssize_t bytes_received = recv(sockfd, buffer, BUFFER_SIZE, 0);
if (bytes_received > 0) {
printf("Received %zd bytes: %s\n", bytes_received, buffer);
} else if (bytes_received == 0) {
printf("Connection closed by peer.\n");
} else { // 错误发生
perror("recv error");
}
```
这个示例展示了如何从套接字读取数据,并处理可能出现的不同结果,包括成功接收、连接关闭以及错误情况。
阅读全文