Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Internet, Downloads und Verbindungen...

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
12.09.2002, 19:57 Uhr
Bruder Leif
dances with systems
(Operator)


Moin!

Ich hab da ein kleines Problem und bin ehrlich gesagt zu faul, mich groß durch die MSDN zu wühlen. Bestimmt kennt sich da einer von Euch aus ;-) Ich soll ein kleines Programm schreiben, das sich über die Standard-Verbindung von Windows ins Internet einwählt, eine Datei runterlädt, und die Verbindung wieder schließt. Bevor ich jetzt mit CInternetSession und was weiß ich noch alles rumprobier, ... kennt jemand ein Patentrezept? *liebguck*
--
Mit 40 Fieber sitzt man nicht mehr vor dem PC.
Man liegt im Bett.
Mit dem Notebook.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
12.09.2002, 21:07 Uhr
Uwe
C/C++ Master
(Administrator)


Hallo Leif,
Was solls denn sein? Mit Login auf FTP oder nur ein HTTP Download?
Patentrezepte gibt es selten
--
"Es ist schwierig, ein Programm wirklich idiotensicher zu machen, weil Idioten so genial sind."

Bis dann...
Uwe

Dieser Post wurde am 12.09.2002 um 21:08 Uhr von Uwe editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
12.09.2002, 21:26 Uhr
Bruder Leif
dances with systems
(Operator)


Oooooch... mir reicht HTTP ;-) Soll ein einfaches Auto-Update draus werden... das Programm startet über den Taskplaner, geht ins Internet, lädt erstmal eine kleine XML-Datei vom Server, in der u.a. Prüfsummen und die aktuelle Programmversion drin stehen. Wenn auf dem Server eine neuere Datei liegt, als die auf dem lokalen Computer, wird die neuere Version runtergeladen und installiert.

Soweit kein Problem, nur die Einwahl und der Download fehlen noch ;-)
--
Mit 40 Fieber sitzt man nicht mehr vor dem PC.
Man liegt im Bett.
Mit dem Notebook.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
13.09.2002, 18:24 Uhr
mike
Pinguinhüpfer
(Operator)


Hi!
Geht auch ein FTP?? Dort kann man dann die eine Textdatei ablegen, welche die Versionsinformation und Infotext beinhaltet. I glob mit CInternetSession gehts ;D

mfg mike
--
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
13.09.2002, 18:36 Uhr
Uwe
C/C++ Master
(Administrator)


Hallo Leif,
habe mich auch, nach einigem Hin- und Her dazu entschlossen, die Sache über FTP zu machen. Per HTTP ist die Sache "mords" störanfällig.
Das Bsp. nutzt die Standardverbindung, die Trennen-Routine würde ich über die RAS Funktion aus meinem Bsp. unter VC++ machen, da die Standardverbindung sich mit dem Beenden schwer tut.

C++:
void CFor_LeifDlg::OnDownload()
{
    /* zusätzlich benötigte Elemente:
        Dialog IDD_PROGRESS
        auf diesem: Fortschrittsanzeige IDC_IDC_PROGRESS
                    Statisches Textfeld IDC_STATUS */

    CString sMsg;
    CProgressdlg dlg;
    dlg.Create( IDD_PROGRESS, this );
    dlg.ShowWindow(SW_SHOW);

    CString ServerName= "www.fun-soft.de";
    CString UserName=   "******"; //mache hier eine Weichcodierung, die ist in einem Debugger nicht auszumachen!
    CString Password=   "******";
    CString RemoteFile= "/web/Download/Verbindung/verbindung.zip";
    CString LocalFile=  "c: \\verbindung.zip";

    CInternetSession session("My FTP Session");

    sMsg.Format("Verbinde mit: %s...", (LPCSTR)ServerName );
    dlg.SetDlgItemText( IDC_STATUS, sMsg );

    CFtpConnection* pConn=session.GetFtpConnection( ServerName, UserName, Password );

    DWORD nErr= GetLastError();
    if ( nErr ){
        sMsg.Format( "%d",nErr );  AfxMessageBox( sMsg );
        return;
    }
    CInternetFile* pfRemoteFile=  
    pConn->OpenFile( RemoteFile, GENERIC_READ, FTP_TRANSFER_TYPE_BINARY, 1 );

    CFile fLocalFile;
    BOOL fRet= fLocalFile.Open(LocalFile, CFile::modeCreate | CFile::modeWrite );
    if ( fRet == FALSE ){
        sMsg.Format("Error opening/creating target file \n'%s'", (LPCSTR)LocalFile );
        AfxMessageBox( sMsg );
        return;
    }

    dlg.m_ctlProcress.SetRange32(0,100);
    int nCurProgress= 0;
    int nMaxProgress= 10000;
    int nTargetPct= 25;
    int nLargestPct= 0;
    char inBuf[512];
    while( TRUE ){
        UINT nActual= pfRemoteFile->Read( inBuf, 512 );
        fLocalFile.Write(inBuf, nActual );
        nCurProgress += nActual;
        int nPct= nCurProgress*100 / nMaxProgress;
        if ( nPct > nTargetPct ){
            nMaxProgress= nCurProgress + (nCurProgress/2);
            nTargetPct += 2;
            if (nTargetPct > 98 ){
                nTargetPct= 99;
            }
        }
        nPct= nCurProgress*100 / nMaxProgress;
        if ( nLargestPct < nPct ) nLargestPct= nPct;
        if ( nPct < nLargestPct ) nPct= nLargestPct;
        dlg.m_ctlProcress.SetPos( nPct );

        sMsg.Format("Received: %d bytes", nCurProgress );
        dlg.SetDlgItemText( IDC_STATUS, sMsg );

        if (nActual != 512 ) {
            dlg.m_ctlProcress.SetPos( nMaxProgress );
            dlg.SetDlgItemText( IDC_STATUS, "Fertig !" );
            break;
        }
    }
    Sleep(2000); // Ergebnis 2 Sek. halten, dann raus
}


--
"Es ist schwierig, ein Programm wirklich idiotensicher zu machen, weil Idioten so genial sind."

Bis dann...
Uwe

Dieser Post wurde am 13.09.2002 um 18:37 Uhr von Uwe editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
13.09.2002, 19:16 Uhr
Bruder Leif
dances with systems
(Operator)


Moin!

Hey, das sieht schon mal sehr interessant aus :-))) Danke!! Jetzt gehts wieder weiter mit dem Projekt *g*
--
Mit 40 Fieber sitzt man nicht mehr vor dem PC.
Man liegt im Bett.
Mit dem Notebook.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
13.09.2002, 20:28 Uhr
Uwe
C/C++ Master
(Administrator)


Hallo Leif,
lösche mal noch die beiden Zeiger, man kann ja nicht an alles denken
--
"Es ist schwierig, ein Programm wirklich idiotensicher zu machen, weil Idioten so genial sind."

Bis dann...
Uwe
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
23.12.2002, 11:02 Uhr
~Drunner
Gast


Ja, das ist doch alles schön und gut, soweit habe ich es auch schon geschafft, was mich aber bei CInternetFile nervt, das die Funktion Seek() nicht funktioniert, kennt da vielleicht jemand nen weg, wie man ach resumen kann, denn dazu muss man ja nBytes überspringen können, und ohne seek geht das ja nicht?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
23.12.2002, 11:08 Uhr
Drunner



Ich war wohl nicht eingelogt, jatzt aber, der beitrag oben gehört mir :-)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: