Seite 1 von 1

QNetworkAccessManager und Firewall

Verfasst: 28. Juli 2011 14:31
von darkshine
Hallo Forum

Ich lade meiner Firmenseite ein Logo.png

Code: Alles auswählen

QNetworkAccessManager *manager = new QNetworkAccessManager(this);
connect(manager, SIGNAL(finished(QNetworkReply*)), this, SLOT(replyFinishedLogo(QNetworkReply*)));	
QNetworkReply *reply = manager->get(QNetworkRequest(QUrl("http://www.firmenseite.de/Logo.png")));
Wenn ich das Programm starte, meldet sich meine Firewall und sagt, mein Programm möchte sich mit dem Internet verbinden. Wenn ich es zulasse gibt es keine Probleme.
Wenn ich aber die Anfrage blockiere (durch die Firewall), dann hängt das Programm.

Ich habe schon versucht alle Errors abzufangen, wie z.B. connect(reply, SIGNAL(error(QNetworkReply::NetworkError)), this, SLOT(slotError(QNetworkReply::NetworkError)));
Aber es werden keine Signale mehr gesendet.

Vielen Dank

Re: QNetworkAccessManager und Firewall

Verfasst: 28. Juli 2011 15:00
von darkshine
Dieses Problem tritt sogar hierbei schon auf

QWebView *view = new QWebView();
view->load(QUrl("http://qt.nokia.com/"));
view->show();

Auch hier meldet sich die Firewall und wenn ich auf "Blockieren" drücke, dann hängt das Programm

Re: QNetworkAccessManager und Firewall

Verfasst: 28. Juli 2011 19:18
von ScyllaIllciz
Wie wäre es einen Timeout einzubauen und eine Fehlermeldung zu bringen?

Re: QNetworkAccessManager und Firewall

Verfasst: 28. Juli 2011 19:54
von darkshine
Ich schaffe es aber nicht, dass Programm danach wieder laufen zu lassen.
Andere Programm laufen doch auch wenn man ihnen die Internetverbindung unterbindet.

Beim Update meines Programms ist es das gleiche Problem. Wenn man nach Update sucht, meldet sich die Firewall. Das kennt man auch von allen anderen Programmen. Wenn man es unterbindet, dann läuft das Programm "normal" weiter. Ich komme da nicht mehr raus, ich glaube auch ein QTimer wird nicht klappen, aber ich werde es morgen versuchen

Re: QNetworkAccessManager und Firewall

Verfasst: 29. Juli 2011 07:55
von darkshine
Ich habe jetzt ein einen QTimer hinzugefügt. Leider ohne Erfolg

QTimer::singleShot(5000, this, SLOT(beendeview()));
QWebView *view = new QWebView();
view->load(QUrl("http://qt.nokia.com/"));

Wenn ich die Verbindung zulasse gibt es keine Probleme und beendeview() wird aufgerufen. Wenn ich die Verbind blockiere, dann springt mein Programm nie in die Funktion beendeview()
Ich weiß wirklich nicht was ich da machen könnte. Ich hoffe es hat noch jemand eine Idee.
Das drei Zeilen so viele Problem machen können :)

Vielen Dank

Re: QNetworkAccessManager und Firewall

Verfasst: 29. Juli 2011 08:00
von ScyllaIllciz
Normalerweise sollte QWebView::load() asynchron sein und der Timeout Slot aufgerufen werden!
Da hilft nur ein minimales kompilierbares Beispiel.

Re: QNetworkAccessManager und Firewall

Verfasst: 29. Juli 2011 08:45
von darkshine
Hier ein kleines Beispiel.

Re: QNetworkAccessManager und Firewall

Verfasst: 29. Juli 2011 09:44
von ScyllaIllciz
Ich habe hier auf einem Win XP getestet. Firewall so eingestellt, dass keine Ausnahme zugelassen werden. Die Ausgabe "singleshot war erfolgreich" erscheint, wie erwartet!?

D.h. hier funktioniert es!

Re: QNetworkAccessManager und Firewall

Verfasst: 29. Juli 2011 09:49
von darkshine
Danke für den Test

Hat sich denn die Firewall bei dir "gemeldet" und gefragt ob du eine Verbindung zulassen möchtest?

Re: QNetworkAccessManager und Firewall

Verfasst: 29. Juli 2011 16:55
von ScyllaIllciz
Nein, ich habe ja angewählt "Keine Ausnahmen zulassen"!