C 프로그래밍 언어를 활용하면 시스템의 인터넷 연결 정보(IP 주소, 서브넷 마스크, 기본 게이트웨이 등)를 손쉽게 조회할 수 있습니다. 본격적인 코드 작성에 앞서, 이 문제를 이해하는 데 필요한 핵심 용어부터 먼저 살펴보겠습니다.
핵심 용어 정리
IP 주소(IP Address)
IP 주소는 Internet Protocol Address의 약자로, 네트워크에 연결된 각 장치에 부여되는 고유한 숫자 식별 번호입니다. IP 주소가 있어야 인터넷을 통해 장치 간 통신이 가능합니다.
서브넷 마스크(Subnet Mask)
서브넷 마스크는 IP 주소의 32비트 구성 요소로, IP 주소를 네트워크 주소와 호스트 주소 두 부분으로 구분하는 역할을 합니다. 여기서 서브넷(Subnet)은 하나의 네트워크를 더 작은 단위로 나눈 것으로, 네트워크에 연결된 시스템들의 완전한 IP 주소 체계를 구성하는 데 사용됩니다.
기본 게이트웨이(Default Gateway)
기본 게이트웨이는 네트워크에 연결된 컴퓨터의 접근 지점 또는 IP 라우터를 의미합니다. 응용 프로그램이 다른 게이트웨이를 명시적으로 지정하지 않는 한, 컴퓨터가 기본적으로 사용하는 출입구 역할을 합니다. 즉, 내부 네트워크의 시스템들이 외부 인터넷과 연결되는 통로입니다. 따라서 기본 게이트웨이에 문제가 발생하면 해당 서브네트워크 전체가 인터넷 연결을 잃을 수 있습니다.
핵심 개념을 모두 익혔으니, 이제 실제 코드를 통해 이러한 정보들을 화면에 출력해 보겠습니다.
C 언어에서 IP 정보를 확인하는 두 가지 방법
C 프로그래밍 언어에서 시스템의 IP 설정 정보를 확인하는 방법은 크게 두 가지가 있습니다.
- system() 함수 활용
- execl() 함수 활용
방법 1: system() 함수 사용
C 언어의 stdlib.h 라이브러리에는 system() 함수가 제공됩니다. 이 함수를 사용하면 운영체제의 명령어를 실행할 수 있으며, Windows 환경에서는 ipconfig 명령을 호출하여 시스템의 IP 구성 정보를 가져올 수 있습니다. 함수 호출 시 실행하고자 하는 ipconfig 파일의 전체 경로를 인자로 전달하면 됩니다.
예제 코드
#include <stdio.h>
#include <stdlib.h>
int main(){
system("c:\\windows\\system32\\ipconfig");
return 0;
}방법 2: execl() 함수 사용
IP 정보를 가져오는 또 다른 방법은 unistd.h 헤더에 정의된 execl() 함수를 사용하는 것입니다. 이 함수는 system() 함수와 달리 여러 개의 매개변수를 필요로 하며, 실행할 파일 경로와 함께 프로세스를 교체하여 새 프로그램을 실행합니다.
예제 코드
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main() {
execl("c:\\windows\\system32\\ipconfig", "ipconfig", NULL);
return 0;
}실행 결과
위 코드들의 출력 결과는 사용 중인 운영체제 및 네트워크 환경에 따라 달라집니다. IP 관련 정보는 시스템의 민감한 데이터에 해당하므로 예시 출력은 생략했지만, 직접 코드를 컴파일하여 실행하면 자신의 시스템에 대한 상세한 네트워크 정보를 확인할 수 있습니다.