recv函数C语言
时间: 2023-09-07 16:14:04 浏览: 61
recv函数是C语言中用于接收数据的函数,其函数原型如下:
```c
#include <sys/types.h>
#include <sys/socket.h>
ssize_t recv(int sockfd, void *buf, size_t len, int flags);
```
其中,sockfd是接收数据的套接字文件描述符;buf是接收数据的缓冲区地址;len是接收数据的最大长度;flags是接收数据的标志位,通常为0。该函数返回实际接收到的数据长度,如果返回0表示连接已经断开,如果返回-1表示出现了错误。
例如,以下代码演示了如何使用recv函数接收数据:
```c
#include <sys/types.h>
#include <sys/socket.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#define BUF_SIZE 1024
int main(int argc, char *argv[]) {
int sockfd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (sockfd < 0) {
perror("socket");
exit(EXIT_FAILURE);
}
// Connect to the server
struct sockaddr_in serv_addr;
memset(&serv_addr, 0, sizeof(serv_addr));
serv_addr.sin_family = AF_INET;
serv_addr.sin_addr.s_addr = inet_addr(argv[1]);
serv_addr.sin_port = htons(atoi(argv[2]));
if (connect(sockfd, (struct sockaddr*)&serv_addr, sizeof(serv_addr)) < 0) {
perror("connect");
exit(EXIT_FAILURE);
}
char buf[BUF_SIZE];
ssize_t n = recv(sockfd, buf, BUF_SIZE, 0);
if (n < 0) {
perror("recv");
exit(EXIT_FAILURE);
}
buf[n] = '\0';
printf("Received data: %s\n", buf);
close(sockfd);
return 0;
}
```
在上面的例子中,我们创建了一个套接字并连接到了服务器,然后使用recv函数接收服务器发送的数据,并将其显示在屏幕上。