본문 바로가기

QT/QT 4.6.2

MAC, IP 주소 알아내기

QT를 쓰면서 현재 컴퓨터의 MAC과 IP를 알아 내야 될 필요가 생겨서 Qt Assistant를 이용하여 찾아 보았다.

생각보다 간단하게 처리가 되었다.

먼저 소스를 보게 되면,

#include 
#include 
#include 

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    QString macAddress;
    QString ipAddress;
    QString Adddress;
    
    QNetworkInterface interface;
    QList macList = interface.allInterfaces();
    QList ipList=interface.allAddresses();
    
    for (int i = 0; i < macList.size(); i++)
    {
        QString str = macList.at(i).hardwareAddress();       // MAC
        if(str != "" )	// windows 에서..
     // if(str != "00:00:00:00:00:00") linux 에서..
        {
            macAddress = str;
        
        }
    }
    
    for (int i = 0; i < ipList.size(); i++)
    {
        if (ipList.at(i) != QHostAddress::LocalHost && ipList.at(i).toIPv4Address())
        {
            ipAddress = ipList.at(i).toString();
            break;
        }
    }
    
    Adddress = "MAC : " + macAddress + "\n\n"+ "I    P : " + ipAddress;
    QMessageBox *box = new QMessageBox;
    box->setText(Adddress);
    box->show();
    
    return app.exec();
}



이렇게 구현을 하였다.

그리고 그 결과

이렇게 현재 컴퓨터의 MAC과 IP를 알아 낼 수 있었다. (그 값은 개인정보 이기 때문에 삭제를 하였다.)

간단하게 함수 설명을 하게 되면,

일단, MAC과 IP는 네트워크에 속하는 부분이라,
#include <QtNetwork>
QtNetwork 모듈을 포함을 시켰다.

그리고, QNetworkInterface 클래스를 이용하여 IP주소와 MAC 주소를 알 수 있기 때문에
QNetworkInterface 클래스도 선언 해 주었다.

QList<QNetworkInterface> macList = interface.allInterfaces();
allInterfaces() 함수는 호스트 컴퓨터가 가지고 있는 모든 네트워크 인터페이스를 반환 해 주는 함수로
MAC 주소의 값을 가지고 있는 함수이다.

QList<QHostAddress> ipList=interface.allAddresses();
allAddresses() 함수는 호스트 컴퓨터가 가지고 있는 모든 IP 주소를 반환 해 주는 함수로
IP 주소의 값을 가지고 있는 함수이다.

allInterfaces() 함수 같은 경우는 모든 네트워크 인터페이스 중에서 MAC 주소만 필요하기 때문에,
이 여러 값들 중에서 hardwareAddress() 함수를 이용하여 MAC 주소만 출력을 시킨다.

QHostAddress::LocalHost 같은 경우는  루프백 주소(127.0.0.1)를 나타내는 것이며,

toIPv4Address() 함수 같은 경우는 IPv4의 주소를 나타내는 것이다.