
	                	                 
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