Qt 4.4

2010-03-19 10 views
6

का उपयोग कर नेटवर्क कनेक्शन को सत्यापित करना मेरे पास एक ऐसा एप्लिकेशन है जो एक नेटवर्क चलाता है जिसके लिए नेटवर्क कनेक्शन की आवश्यकता होती है। अब मेरा लक्ष्य यह जांचना है कि उपयोगकर्ता के पास नेटवर्क कनेक्शन है, अगर उसके पास कोई नहीं है, तो मैं आगे बढ़ने के बिना सीधे एक त्रुटि प्रदर्शित कर सकता हूं। यदि उसके पास है, तो वह मेरे आवेदन के साथ काम करना जारी रख सकता है। तो मेरी मूल आवश्यकता यह जांचना है कि उपयोगकर्ता के पास नेटवर्क कनेक्शन है या नहीं। मैं क्यूटी 4.4 के माध्यम से कैसे प्राप्त कर सकता हूं? मैं विंडोज एक्सपी का उपयोग कर रहा हूँ।Qt 4.4

उत्तर

10

यह कोड आपकी मदद करेगा।

#include <QtCore/QCoreApplication> 
#include <QtNetwork/QNetworkInterface> 

bool isConnectedToNetwork() 
{ 
    QList<QNetworkInterface> ifaces = QNetworkInterface::allInterfaces(); 
    bool result = false; 

    for (int i = 0; i < ifaces.count(); i++) 
    { 
     QNetworkInterface iface = ifaces.at(i); 
     if (iface.flags().testFlag(QNetworkInterface::IsUp) 
      && !iface.flags().testFlag(QNetworkInterface::IsLoopBack)) 
     { 

#ifdef DEBUG 
      // details of connection 
      qDebug() << "name:" << iface.name() << endl 
        << "ip addresses:" << endl 
        << "mac:" << iface.hardwareAddress() << endl; 
#endif 

      // this loop is important 
      for (int j=0; j<iface.addressEntries().count(); j++) 
      { 
#ifdef DEBUG 
       qDebug() << iface.addressEntries().at(j).ip().toString() 
         << "/" << iface.addressEntries().at(j).netmask().toString() << endl; 
#endif 

       // we have an interface that is up, and has an ip address 
       // therefore the link is present 

       // we will only enable this check on first positive, 
       // all later results are incorrect 
       if (result == false) 
        result = true; 
      } 
     } 

    } 

    return result; 
} 

int main(int argc, char *argv[]) 
{ 
    QCoreApplication a(argc, argv); 
    QTextStream output(stdout); 


    output << endl << "Connection Status: " << ((isConnectedToNetwork())?"Connected":"Disconnected") << endl; 


    return a.exec(); 
} 
+1

जैसा कि मैंने अपने उत्तर में लिखा था: QNetworkInterface आपको केवल कुछ नेटवर्क के साथ कनेक्शन बताएगा। यह इंटरनेट एक्सेस के साथ लैन हो सकता है, एड-होक वैलान जो आपके लैपटॉप को आपके मोबाइल, वर्चुअल मशीन नेटवर्क आदि से जोड़ता है। मुझे नहीं लगता कि यह जानकारी ओपी की तलाश में है। – chalup

+0

हाँ ... और वह पर्याप्त है .. चाल है ... – liaK

+1

आपके कोड के लिए धन्यवाद। लेकिन अगर किसी के पास उसके कंप्यूटर (जैसे मेरे) में वर्चुअल मशीन स्थापित है तो यह कोड असफल हो जाएगा। अगर मेरे पास समय है तो मैं इसे ठीक करने की कोशिश करूंगा। –

1

मुझे लगता है कि "नेटवर्क कनेक्शन" से आपका मतलब है "इंटरनेट कनेक्शन", यानी आपको अपने डेस्कटॉप और मोबाइल के बीच लैन या कुछ विज्ञापन नेटवर्क की परवाह नहीं है।

सबसे आसान तरीका सिर्फ आपके इंटरनेट की ज़रूरत वाले इंटरनेट सेवा से जुड़ना है और ओएस को नेटवर्क अनुरोध को संभालने देना है। अगर आपको उत्तर मिल जाता है, तो एक कनेक्शन है, अगर अनुरोध का समय समाप्त हो गया है, तो कोई कनेक्शन नहीं है।

आप QNetworkInterface :: flags() के माध्यम से नेटवर्क इंटरफ़ेस की स्थिति देख सकते हैं, लेकिन यह आपको इंटरफ़ेस से कनेक्ट होने वाले नेटवर्क के बारे में जानकारी नहीं देता है: इंटरफ़ेस हो सकता है, लेकिन इंटरनेट के बिना केवल LAN से कनेक्ट हो सकता है पहुंच।

1
क्यूटी 4.7 के साथ

, आप कनेक्शन जाँच और यहां तक ​​कि उन्हें जैसे शुरू करने के लिए उपयोग कर सकते हैं QNetworkConfiguration सिम्बियन पर

संबंधित मुद्दे