Frage~~~~~~~~~ unter Linux QT4
Frage~~~~~~~~~ unter Linux QT4
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();
......
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 hat geschrieben:Hallo,
also in der Doku habe ich unter QHostInfo die Funktiongefunden. Dabei ist auch ein Beispielcode, den ich jetzt aber auf die Schnelle nicht ausprobiert habe. Aber vielleicht hilft dir das ja schon weiter.QList<QHostAddress> QHostInfo::addresses () const
Danke schoen. Aber muss das Problem sofort geloest werden. Hilfen Sie mir bald.~~~~~~~~~~
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.
Im enstprechenden Slot lookedUp(QHostInfo) kannst du dann, wie in der Doku beschrieben, deine IPs auslesen.
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.
Mit folgendem Code kannst du deine eigene IP auslesen.
Code: Alles auswählen
QHostInfo::lookupHost(QHostInfo::localHostName (),this, SLOT(lookedUp(QHostInfo)));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();
}
Zuletzt geändert von heikob am 23. August 2006 09:29, insgesamt 1-mal geändert.
Danke ,Danke~~~~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.Im enstprechenden Slot lookedUp(QHostInfo) kannst du dann, wie in der Doku beschrieben, deine IPs auslesen.Code: Alles auswählen
QHostInfo::lookupHost(QHostInfo::localHostName (),this, SLOT(lookedUp(QHostInfo)));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.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(); }
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
I will try them.
Danke dir für deine Hilfen.Ich verstehe!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.Im enstprechenden Slot lookedUp(QHostInfo) kannst du dann, wie in der Doku beschrieben, deine IPs auslesen.Code: Alles auswählen
QHostInfo::lookupHost(QHostInfo::localHostName (),this, SLOT(lookedUp(QHostInfo)));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.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(); }
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
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................
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
Sorry
Nicht zu sorry.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
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.........