2013-05-01 2 views
0

QT를 사용하여 mac 주소를 얻으려고 노력 중입니다. 지금이 코드를 사용하고 있습니다 :QT 인터페이스가 진짜인지 확인하십시오.

QStringList Util::getMac(){ 
QStringList items; 

foreach(QNetworkInterface interface, QNetworkInterface::allInterfaces()) 
{ 
    if (interface.flags().testFlag(QNetworkInterface::IsRunning)) 
    foreach (QNetworkAddressEntry entry, interface.addressEntries()) 
    { 
     if (interface.hardwareAddress() != "00:00:00:00:00:00" && entry.ip().toString().contains(".")){ 
     items << interface.hardwareAddress(); 
     } 
    } 
} 
return items;} 

그러나 문제는 나에게 hamachi 인터페이스의 mac 주소도 제공한다는 것입니다. 해당 인터페이스가 인터넷에 액세스 할 수 있는지 확인하는 방법이 있습니까? 나는 그것이 사실이면서 가상이 아니라는 것을 알 것이다.

+0

에 연결할 수있는 주소 인 경우 다음 볼 수 있었다. 또한 VPN을 통해 실행중인 경우 해당 VPN 인터페이스는 사용할 인터페이스입니다. 아마도 기본 게이트웨이와 인터넷에 연결된 네트워크가 어떤 인터페이스인지 판단하기 위해 반복되는 인터페이스의 IP 주소와 서브넷 마스크의 조합을 비교하는 것이 유용 할 것입니다. –

+0

그게 좋은 생각이야, 고마워. 유일한 문제는 기본 게이트웨이 IP를받는 것입니다. 플랫폼에 따라 다르며 필요한 모든 플랫폼에 대한 솔루션을 찾지 못했습니다. – black

+0

UUID가 필요합니다. 실제 인터페이스가 인터넷에 연결할 수 없는지 여부는 중요하지 않습니다. – black

답변

0

당신은 http://qt-project.org/doc/qt-4.8/qnetworkinterface.html#allAddresses를 통해 인터페이스의 IP를 확인하고 심지어 "진짜"인터페이스 가끔 인터넷에 도달 할 수없는 인터넷

+0

IP를 가져 오는 방법을 알고 있지만 어떻게 알 수 있습니까? ip가 인터넷에 연결할 수 있습니까? – black

+0

@black 당신은 모든지도 위에 있습니다. 관심이있는 모든 사람이 MAC (항상 최상의 방법은 아니지만 작동 할 수 있음)에서 UID를 만드는 경우 인터넷에 연결할 수 있는지 여부는 신경 쓰지 않아도됩니다. 또는 어떤 네트워크 든 상관 없습니다. –

+0

음, hamachi 인터페이스는 많은 PC에 대해 동일한 mac 주소를 가질 수 있습니다 ... – black

관련 문제