Announcement

Collapse
No announcement yet.

CFtpConnection::Command

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • CFtpConnection::Command

    hey,

    also ich muss hier in der arbeit in einem programm das kommando
    "site file=jes" an den firmenftp schicken...

    das mach ich mit im titel genannter funktion. jetzt is es aber so, dass die funktion 0 zurückliefert, was heißt, dass sie fehlgeschlagen ist.
    also hab ich danach GetGastError() aufgerufen, was mir mit dem return 0 sagt, dass die operation erfolgreich war.

    und jetzt bin ich verwirrt. anscheinend klappts nicht, weil das entsprechende ergebnis in der weiteren verarbeitung falsch ist.

    gebe ich das kommando allerdings inder dos-shell ein, wenn ich zum ftp verbunden bin, funktioniert das wunderbar.

    PHP Code:
    try
            {
                
    pConnect sess.GetFtpConnection(hostname,username,password);

                
    pConnect->Command("site file=jes");
                
    cout << GetLastError() << endl;
            }
            catch (
    CInternetExceptionpEx)
            {
                
    pEx->GetErrorMessage(buffer,15000);
                
    cout << buffer;
            } 
    kann mir da vllt irgendjemand helfen?

    mfg,
    smuRf

  • #2
    also das mit dem "site file=jes" funktioniert jetz musste hinten noch \r\n dranhängen...

    jetz steh ich aber vorm nächsten problem...

    wenn ich
    PHP Code:
    pConnect->Command("get 'wienbd.ssgtemp.dkm2120.sg21.cntl' patch_tool.out"); 
    mache, kommt immer ne exception: "500 unknown command get"

    keine ahnung was ich falsch mache... vllt weiß ja von euch jemand weiter...

    greez,
    smuRf

    Comment


    • #3
      das FTP vom RFC 959 http://www.faqs.org/rfcs/rfc959.html kennt kein get

      Hier die zulässigen Kommandos:

      http://www.nsftools.com/tips/RawFTP.htm
      Christian

      Comment


      • #4
        hmmm ... habs jetz so

        PHP Code:
        pConnect->Command("PASV\r\n);
        InternetGetLastResponseInfo(&error,buffert,&bufferl);
        cout << buffer;
        pConnect->Command("
        RETR test\r\n); 
        in passive mode geht er noch... da krieg ich auch response, aber beim RETR macht er nix
        was mach ich falsch??
        Zuletzt editiert von smuRf; 20.07.2007, 09:09.

        Comment


        • #5
          und ohne Passivmode?

          und die Datei testrn liegt auch da, wo du bist?
          Christian

          Comment


          • #6
            ich mach doch vor dem RETR eh PASV.

            aber sobald RETR an den server geschickt wird, steht mein programm...

            kommt keine response mehr vom ftp noch sonst irgendwas... is wie eingefroren

            und ja das file liegt im "startverzeichnis" vom ftp, in dem ich stehe, nachdem ich connected hab.

            was kann da falsch sein?
            bzw. woher weiß der ftp wohin er das file lokal kopieren soll?

            Comment


            • #7
              eben, mal ohne Passivmode


              ("RETR testrn);

              Oder auch da \r\n dranhängen...
              Christian

              Comment


              • #8
                ohne den passive mode gehts auch net

                Comment


                • #9
                  Ich programmiere nicht mit Visual C, aber die Klasse hat eine GETFILE Methode

                  Vielleicht mal die probieren

                  http://msdn2.microsoft.com/en-us/lib...11(VS.71).aspx
                  Christian

                  Comment


                  • #10
                    jop weiß ich... leider funktioniert das ganze ding dann net mehr...

                    weil auf dem server per command ein "job" gestartet wird und der dann mit diesem getfile net ausgeführt wird

                    darum muss ich die raw commands verwenden

                    Comment


                    • #11
                      Die Logik muss ich jetzt nicht verstehen:

                      - Du willst einen Download machen
                      - GETFILE kannst du nicht benutzen, weil der Server irgendwas macht

                      Was meinst du, macht GETFILE intern -> die Raw Befehle benutzen. Auch die Methode kann nicht zaubern.

                      Somit dürfte es für dich egal sein, wie du den Server angehst
                      Christian

                      Comment


                      • #12
                        genau das hab ich mir auch gedacht... leider funktionierts nicht.

                        in der dos shell is es simpel, da mach setz ich den job an und mittel get ... starte ich ihn dann...

                        wenn ich das im programm mache, also job in auftrag geben und mittels getfile() versuche den zu starten funktioniert das nicht... frag mich nicht warum

                        Comment

                        Working...
                        X