
`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