要将recvfrom()缓冲区的值保存到数组中,可以按照以下步骤进行操作:
以下是一个示例代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/socket.h>
#include <netinet/in.h>
#define MAX_BUFFER_SIZE 1024
int main() {
int sockfd;
struct sockaddr_in serverAddr, clientAddr;
socklen_t addrLen = sizeof(clientAddr);
char buffer[MAX_BUFFER_SIZE];
char dataArray[MAX_BUFFER_SIZE];
// 创建socket
sockfd = socket(AF_INET, SOCK_DGRAM, 0);
if (sockfd < 0) {
perror("socket creation failed");
exit(EXIT_FAILURE);
}
memset(&serverAddr, 0, sizeof(serverAddr));
memset(&clientAddr, 0, sizeof(clientAddr));
// 设置服务器地址
serverAddr.sin_family = AF_INET;
serverAddr.sin_addr.s_addr = INADDR_ANY;
serverAddr.sin_port = htons(12345);
// 绑定socket到服务器地址
if (bind(sockfd, (const struct sockaddr *)&serverAddr, sizeof(serverAddr)) < 0) {
perror("bind failed");
exit(EXIT_FAILURE);
}
// 接收数据并保存到数组中
int bytesRead = recvfrom(sockfd, buffer, sizeof(buffer), 0, (struct sockaddr *)&clientAddr, &addrLen);
if (bytesRead < 0) {
perror("recvfrom failed");
exit(EXIT_FAILURE);
}
memcpy(dataArray, buffer, bytesRead); // 将缓冲区中的数据复制到数组中
// 打印接收到的数据
printf("Received data: %s\n", dataArray);
close(sockfd);
return 0;
}
在上述示例代码中,我们创建了一个UDP服务器,使用recvfrom()函数接收客户端发送的数据,并将接收到的数据保存到dataArray数组中。你可以根据实际需求修改代码中的IP地址、端口号和数组大小等参数。
请注意,这只是一个简单的示例,实际应用中可能需要进行错误处理、数据校验等其他操作。
领取专属 10元无门槛券
手把手带您无忧上云