
recvfrom 함수의 마지막 두 개의 인자는 다음과 같습니다.
- 마지막 인자: `struct sockaddr *addr`
- 데이터를 받은 소켓의 주소를 저장할 변수의 주소를 전달합니다.
- 이 변수는 `struct sockaddr_in` 타입의 변수여야 합니다.
- 이 변수는 `recvfrom` 함수가 데이터를 받은 소켓의 주소를 저장합니다.
- 두 번째 마지막 인자: `socklen_t *addrlen`
- `addr` 변수의 크기를 저장할 변수의 주소를 전달합니다.
- 이 변수는 `socklen_t` 타입의 변수여야 합니다.
- 이 변수는 `recvfrom` 함수가 데이터를 받은 소켓의 주소 크기를 저장합니다.
recvfrom 함수를 사용하여 데이터를 수신하는 방법은 다음과 같습니다.
#hostingforum.kr
c
#include
#include
#include
#include
#include
#include
int main() {
int sockfd = socket(AF_INET, SOCK_DGRAM, 0);
if (sockfd < 0) {
perror("socket");
exit(1);
}
struct sockaddr_in servaddr;
servaddr.sin_family = AF_INET;
servaddr.sin_port = htons(1234);
servaddr.sin_addr.s_addr = inet_addr("127.0.0.1");
if (bind(sockfd, (struct sockaddr *)&servaddr, sizeof(servaddr)) < 0) {
perror("bind");
exit(1);
}
char buffer[1024];
struct sockaddr_in fromaddr;
socklen_t fromlen = sizeof(fromaddr);
int bytes_received = recvfrom(sockfd, buffer, 1024, 0, (struct sockaddr *)&fromaddr, &fromlen);
if (bytes_received < 0) {
perror("recvfrom");
exit(1);
}
printf("Received data: %sn", buffer);
close(sockfd);
return 0;
}
이 코드에서는 `recvfrom` 함수의 마지막 두 개의 인자를 사용하여 데이터를 수신합니다. `fromaddr` 변수는 데이터를 받은 소켓의 주소를 저장하고, `fromlen` 변수는 `fromaddr` 변수의 크기를 저장합니다.
2025-03-08 06:15