Zum Inhalt springen

Asynchroner Internetzugriff


whizzle

Empfohlene Beiträge

Hallo zusammen,

da Ihr die Fortsetzung meines Thread weiter unten ja erfolgreich ignoriert habt, versuche ich es hier jetzt nochmal ;)

Ich habe mein Problem mal gänzlich in eine eigene Mini-App isoliert, den Code seht Ihr unten. Mein Problem ist weiterhin, dass alle Funktionen erfolgreich aufgerufen werden, d.h. der Zugriff auf die Url sollte eingeleitet sein. Im synchronen Modus klappt's auch. Allerdings kommt im asynchronen Modus meine Callback-Funktion (AsyncFunc(...), siehe unten) nie zum Aufruf.

VOID CALLBACK AsyncFunc(

IN HINTERNET hInternet,

IN DWORD dwContext,

IN DWORD dwInternetStatus,

IN LPVOID lpvStatusInformation,

IN DWORD dwStatusInformationLength

)

{

MessageBox(NULL, "Callback-Funktion wurde aufgerufen", "", 0);

}

int APIENTRY WinMain(HINSTANCE hInstance,

HINSTANCE hPrevInstance,

LPSTR lpCmdLine,

int nCmdShow )

{

HANDLE hSession = NULL, hResource = NULL;

hSession = InternetOpen("TestApp", INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, INTERNET_FLAG_ASYNC);

InternetSetStatusCallback(hSession, (INTERNET_STATUS_CALLBACK)AsyncFunc);

hResource = InternetOpenUrl(hSession, "ftp://ftp.microsoft.com/developr/readme.txt", NULL, 0, 0, 0);

DWORD dw = GetLastError();

if( !hResource && (dw == ERROR_IO_PENDING))

MessageBox(NULL, "Anfrage läuft", "", 0);

// Warten, und warten, und weiter warten....schnarch

// Schleife, Dialog o.ä.

if(hResource)

InternetCloseHandle(hResource);

if(hSession)

InternetCloseHandle(hSession);

return 0;

}

Hat jemand eine Idee??

Nochmal Danke und Gruß

Link zu diesem Kommentar
Auf anderen Seiten teilen

Leider kann ich nicht direkt über Ftp rausgehen, da unser CERN-Proxy das unterbindet. Die entsprechenden Funktionen schlagen somit alle fehl. Ich muss also das HTTP-Protokoll benutzen (InternetOpenUrl(..)), dann klappt der Funktionsaufruf, nur - wie oben beschrieben - die Callback-Funktion macht ärger!

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hab des Rätsel's Lösung selbst gefunden: man MUSS (!!!!!) der Funktion, die asynchron aufgerufen werden soll, irgendeinen DWORD im Parameter dwContext mit auf den Weg geben, der dann an die Callback-Funktion weitergegeben wird. Tut man dies nicht (z.B., weil man gar keine weiteren Infos in der Callback-Funktion braucht), macht good old Windows aus der asynchronen Funktion eine synchrone. Danke, Billy...

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...