QT를 쓰면서 현재 컴퓨터의 MAC과 IP를 알아 내야 될 필요가 생겨서 Qt Assistant를 이용하여 찾아 보았다.
생각보다 간단하게 처리가 되었다.
먼저 소스를 보게 되면,
이렇게 구현을 하였다.
그리고 그 결과
이렇게 현재 컴퓨터의 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의 주소를 나타내는 것이다.
생각보다 간단하게 처리가 되었다.
먼저 소스를 보게 되면,
#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의 주소를 나타내는 것이다.
'QT > QT 4.6.2' 카테고리의 다른 글
간단한 ping 명령어 사용하기(QProcess::execute) (0) | 2010.06.08 |
---|---|
QProcess 클래스를 이용하여 Ping 명령 사용하기 (0) | 2010.06.03 |
파일의 특정 부분 입 / 출력하기 (QTextStream::readLine, QString::split) (1) | 2010.05.27 |
컴퓨터 해상도 구하기(QDesktopWidget::screenGeometry) (0) | 2010.05.25 |
QTextStream와 QDataStream의 차이 비교 (1) | 2010.05.21 |