Frage~~~~~~~~~ unter Linux QT4

Alles rund um die Programmierung mit Qt
Antworten
Hass
Beiträge: 40
Registriert: 12. Juli 2006 10:42

Frage~~~~~~~~~ unter Linux QT4

Beitrag von Hass »

Hallo zusammen,
eine Frage habe ich.

Wo ist QHostAddress, wenn sie unter Linux zu nutzen ist?

Flogend , unter Linux:

.....
QHostInfo info;
if ( !info.addresses().isEmpty() ) // Return empty!!!!!! Warum? Why?
info.addresses().first().toString();
......
heikob
Beiträge: 81
Registriert: 23. März 2005 23:20

Beitrag von heikob »

Hallo,

also in der Doku habe ich unter QHostInfo die Funktion
QList<QHostAddress> QHostInfo::addresses () const
gefunden. Dabei ist auch ein Beispielcode, den ich jetzt aber auf die Schnelle nicht ausprobiert habe. Aber vielleicht hilft dir das ja schon weiter.
Hass
Beiträge: 40
Registriert: 12. Juli 2006 10:42

Beitrag von Hass »

heikob hat geschrieben:Hallo,

also in der Doku habe ich unter QHostInfo die Funktion
QList<QHostAddress> QHostInfo::addresses () const
gefunden. Dabei ist auch ein Beispielcode, den ich jetzt aber auf die Schnelle nicht ausprobiert habe. Aber vielleicht hilft dir das ja schon weiter.

Danke schoen. Aber muss das Problem sofort geloest werden. Hilfen Sie mir bald.~~~~~~~~~~ :oops:
heikob
Beiträge: 81
Registriert: 23. März 2005 23:20

Beitrag von heikob »

So, jetzt aber. Die Doku ist hier etwas missverständlich. Die Lösung ist, wie bereits vermutet in QHostInfo zu finden.

Mit folgendem Code kannst du deine eigene IP auslesen.

Code: Alles auswählen

QHostInfo::lookupHost(QHostInfo::localHostName (),this, SLOT(lookedUp(QHostInfo)));
Im enstprechenden Slot lookedUp(QHostInfo) kannst du dann, wie in der Doku beschrieben, deine IPs auslesen.

Code: Alles auswählen

void CoreClient::lookedUp(const QHostInfo &host)
    {
        if (host.error() != QHostInfo::NoError) {
            qDebug() << "Lookup failed:" << host.errorString();
            return;
        }

        foreach (QHostAddress address, host.addresses())
            qDebug() << "Found address:" << address.toString();
    }
Da ich nur eine Netzwerkkarte und damit eine IP habe, kam bei mir nur eine IP als Ergebnis, aber ich denke, das solte mit mehreren IPs auch funktionieren.
Zuletzt geändert von heikob am 23. August 2006 09:29, insgesamt 1-mal geändert.
Hass
Beiträge: 40
Registriert: 12. Juli 2006 10:42

Beitrag von Hass »

heikob hat geschrieben:So, jetzt aber. Die Doku ist hier etwas missverständlich. Die Lösung ist, wie bereits vermutet in QHostInfo zu finden.

Mit folgendem Code kannst du deine eigene IP auslesen.

Code: Alles auswählen

QHostInfo::lookupHost(QHostInfo::localHostName (),this, SLOT(lookedUp(QHostInfo)));
Im enstprechenden Slot lookedUp(QHostInfo) kannst du dann, wie in der Doku beschrieben, deine IPs auslesen.

Code: Alles auswählen

void CoreClient::lookedUp(const QHostInfo &host)
    {
        if (host.error() != QHostInfo::NoError) {
            qDebug() << "Lookup failed:" << host.errorString();
            return;
        }

        foreach (QHostAddress address, host.addresses())
            qDebug() << "Found address:" << address.toString();
    }
Da ich nur eine Netzwerkkarte und damit eine IP habe, kam bei mir nur eine IP als Ergebnis, aber ich denke, das solte mit mehreren IPs auch funktionieren.

Es wäre schön, wenn du die Überschrift von deinem ersten Beitrag dahingehend ändern könntest, dass ihn auch andere Leute mit dem gleichen Problem erkennen können. Etwa in
[gelöst] Eigene IP-Adresse abfragen
Danke ,Danke~~~~
I will try them.
Hass
Beiträge: 40
Registriert: 12. Juli 2006 10:42

Beitrag von Hass »

heikob hat geschrieben:So, jetzt aber. Die Doku ist hier etwas missverständlich. Die Lösung ist, wie bereits vermutet in QHostInfo zu finden.

Mit folgendem Code kannst du deine eigene IP auslesen.

Code: Alles auswählen

QHostInfo::lookupHost(QHostInfo::localHostName (),this, SLOT(lookedUp(QHostInfo)));
Im enstprechenden Slot lookedUp(QHostInfo) kannst du dann, wie in der Doku beschrieben, deine IPs auslesen.

Code: Alles auswählen

void CoreClient::lookedUp(const QHostInfo &host)
    {
        if (host.error() != QHostInfo::NoError) {
            qDebug() << "Lookup failed:" << host.errorString();
            return;
        }

        foreach (QHostAddress address, host.addresses())
            qDebug() << "Found address:" << address.toString();
    }
Da ich nur eine Netzwerkkarte und damit eine IP habe, kam bei mir nur eine IP als Ergebnis, aber ich denke, das solte mit mehreren IPs auch funktionieren.

Es wäre schön, wenn du die Überschrift von deinem ersten Beitrag dahingehend ändern könntest, dass ihn auch andere Leute mit dem gleichen Problem erkennen können. Etwa in
[gelöst] Eigene IP-Adresse abfragen
Danke dir für deine Hilfen.Ich verstehe!
Aber, aber Sie verstehen sich nicht was ich eigentlich möchte~~~~Shade~~~~~
Ich möchte IPadressen bekommen, die im Innernetzwerk (internal network)sind!~~~~~~Z.B.192.,168.0.106(meinLinux PC).
Mit deinen Code bekomme ich nur "localhost" oder "127.0.0.1" zurück.

Unter windows!Flogen sind OK~~~~

if ( !info.addresses().isEmpty() )
info.addresses().first().toString();

Jedoch ......unter Linux.......nicht alles................ :oops: :oops: :oops: :oops: :oops: :shock: :shock: :shock: :shock: :shock: :shock: :shock: :shock: :shock: :shock: :shock: :shock:
heikob
Beiträge: 81
Registriert: 23. März 2005 23:20

Beitrag von heikob »

Achso, jetzt glaube ich dich zu verstehen. Also du möchtest alle Rechner im lokalen Netzwerk finden. Dabei funktioniert es mit Windows.Rechnern, aber nicht zuverlässig mit Linux Rechnern? Ich vermute, bitte korrigiert mich wenn ich mich irre, dass es daran liegt, dass sich ein Linux-Rechner nicht standardmäßig im Netzwerk bekannt macht. Hier hilft vermutlich nur ein Broadcast oder ähnliches. Allerdings bin ich da jetzt etwas überfragt.

Sorry
Hass
Beiträge: 40
Registriert: 12. Juli 2006 10:42

Beitrag von Hass »

heikob hat geschrieben:Achso, jetzt glaube ich dich zu verstehen. Also du möchtest alle Rechner im lokalen Netzwerk finden. Dabei funktioniert es mit Windows.Rechnern, aber nicht zuverlässig mit Linux Rechnern? Ich vermute, bitte korrigiert mich wenn ich mich irre, dass es daran liegt, dass sich ein Linux-Rechner nicht standardmäßig im Netzwerk bekannt macht. Hier hilft vermutlich nur ein Broadcast oder ähnliches. Allerdings bin ich da jetzt etwas überfragt.

Sorry
Nicht zu sorry.
Das ist genau zu helfen.
Ich denke, daß ich mit Funktionen des Linux-Systems nutzen kann.
Es gebt viele wichtige Funktionen vom Netzwerk. Dabei gebt es Hilfen, vielleicht, vielleicht.........
Antworten