
	                	                 
`net_get_interfaces` 함수는 네트워크 인터페이스 목록을 반환하는 함수입니다. 
이 함수는 다음 정보를 반환합니다.
- 인터페이스 이름
- 인터페이스 유형 (예: 유선, 무선)
- 인터페이스 주소 (MAC 주소)
- 인터페이스 상태 (활성화, 비활성화)
함수의 반환 타입은 `net_interface_info` 구조체의 배열입니다. 
예를 들어, 다음 코드는 `net_get_interfaces` 함수를 사용하여 네트워크 인터페이스 목록을 가져와 출력하는 방법을 보여줍니다.
#hostingforum.kr
c
#include 
#include 
#include 
int main() {
    struct ifreq ifr;
    struct ifconf ifc;
    char buf[1024];
    int s, i;
    // 네트워크 인터페이스 목록 가져오기
    s = socket(AF_INET, SOCK_DGRAM, 0);
    if (s < 0) {
        perror("socket");
        return 1;
    }
    ifc.ifc_len = sizeof(buf);
    ifc.ifc_buf = buf;
    if (ioctl(s, SIOCGIFCONF, &ifc) < 0) {
        perror("ioctl");
        return 1;
    }
    // 네트워크 인터페이스 목록 출력
    for (i = 0; i < ifc.ifc_len / sizeof(struct ifreq); i++) {
        struct ifreq *ifr = &ifc.ifc_req[i];
        printf("인터페이스 이름: %sn", ifr->ifr_name);
        printf("인터페이스 유형: ");
        if (ifr->ifr_addr.sa_family == AF_INET) {
            printf("유선n");
        } else if (ifr->ifr_addr.sa_family == AF_INET6) {
            printf("무선n");
        } else {
            printf("기타n");
        }
        printf("인터페이스 주소: ");
        if (ifr->ifr_addr.sa_family == AF_INET) {
            struct sockaddr_in *sin = (struct sockaddr_in *)&ifr->ifr_addr;
            printf("%sn", inet_ntoa(sin->sin_addr));
        } else if (ifr->ifr_addr.sa_family == AF_INET6) {
            struct sockaddr_in6 *sin6 = (struct sockaddr_in6 *)&ifr->ifr_addr;
            printf("%sn", inet_ntop(AF_INET6, &sin6->sin6_addr, buf, sizeof(buf)));
        } else {
            printf("기타n");
        }
        printf("인터페이스 상태: ");
        if (ifr->ifr_flags & IFF_UP) {
            printf("활성화n");
        } else {
            printf("비활성화n");
        }
        printf("n");
    }
    close(s);
    return 0;
}
이 코드는 네트워크 인터페이스 목록을 가져와 출력하는 방법을 보여줍니다. 이 코드를 사용하여 네트워크 인터페이스 목록을 가져와 출력할 수 있습니다.
2025-07-22 15:57