Конференция "Сети" » Вопрос по FtpGetFile
 
  • SortoVaritu © (23.06.09 15:17) [80]
    Вот кстати еще хотел спросить. Чем отличается запрос файла командой FTPGetFile и командой RETR.
  • Сергей М. © (23.06.09 15:25) [81]

    > у меня всегда такой мусор валяецца


    И кому, как думаешь, интересно или приятно взирать на твой "мусор" ?

    Ты пойми - если ты процитировал некий код, то подразумевается, что ты уверен в том что он имеет прямое отношение к твоей задаче или проблеме в ее решении, т.е. он имеет некое осмысленное немаловажное значение, коль скоро он фигурирует ..


    > Чем отличается запрос файла командой FTPGetFile и командой
    > RETR


    FTPGetFile неявно подает команду RETR, получает содержимое удаленного файла и записывает полученное содержимое в указанный тобой файл.
  • SortoVaritu © (23.06.09 15:52) [82]
    Проще говоря FTPGetFile так же использует команду RETR для доступа к файлу.
  • Сергей М. © (23.06.09 15:56) [83]
    Конечно.
    А как же иначе ?
  • SortoVaritu © (23.06.09 16:27) [84]
    Хм. Тогда я вот думаю. Решится ли мой вопрос с разрывом сессии, если я буду использовать напрямую RETR вместо FTPGETFile.
  • Сергей М. © (23.06.09 16:32) [85]
    Ты уже код [78] изучил ? Опробовал на своих "больших" файлах ? Каковы результаты ?
    Излагай подробно и дословно все что видишь при его выполнении ..
  • SortoVaritu © (25.06.09 10:31) [86]
    Результат точно такой же.
    Access violation at adress 77C32A16 in module msvcrt.dll. Read of adress FFFFFFFF
  • Сергей М. © (25.06.09 10:53) [87]
    Что за ОС ? Какая версия Делфи ?
  • SortoVaritu © (25.06.09 10:59) [88]
    Windows XP SP3. Delphi 7.
    Я вот тоже думаю, что не в проге дело.
  • Сергей М. © (25.06.09 11:05) [89]
    Ты это код пробовал "один в один" ?
    Или свои изменения внес ?
    Если внес, показывай весь этот фрагмент со своими изменениями ..
  • SortoVaritu © (25.06.09 11:11) [90]
    код внес один в один. только сервер свой подставил ну и имя файла тож который на сервере лежит а так один в один
  • Сергей М. © (25.06.09 11:25) [91]

    > код внес один в один. только сервер свой подставил


    И это ты называешь "один в один" ?)
    Приводи текст с изменениями ..
  • SortoVaritu © (25.06.09 11:41) [92]
    function FtpCommand(
     hConnect: HINTERNET;
     fExpectResponse: BOOL;
     dwFlags: DWORD;
     lpszCommand: PChar;
     dwContext: DWORD;
     var hFtpCommand: HINTERNET): BOOL;
     stdcall; external 'wininet.dll' name 'FtpCommandA';

    const
    url = 'vh22.win.hoster.by';

    procedure TForm1.Button5Click(Sender: TObject);
    var
    hInet, hFTPSession, hFile: HINTERNET;
    RCode, RTLen: Cardinal;
    RText: String;
    begin
    hInet := InternetOpen('FTP', INTERNET_OPEN_TYPE_DIRECT, nil, nil, 0);
    Win32Check(Assigned(hInet));
    try
      hFTPSession := InternetConnect(hInet, 'vh22.win.hoster.by', 21, login, password, INTERNET_SERVICE_FTP, INTERNET_FLAG_PASSIVE, 0);
      Win32Check(Assigned(hFTPSession));
      try
        Win32Check(FtpCommand(hFTPSession, True, FTP_TRANSFER_TYPE_BINARY, 'RETR 1.txt', 0, hFile));
        try
          RTLen := 255;
          SetLength(RText, RTLen);
          RCode := 12003; // <-- бессмысленная строка !!!!
          Win32Check(InternetGetLastResponseInfo(RCode, PChar(RText), RTLen));
          SetLength(RText, RTLen);
          ShowMessage('Response code = ' + IntToStr(RCode) + #10#10'Response text is'#10#10 + RText)

        finally
          InternetCloseHandle(hFile);
        end;
      finally
        InternetCloseHandle(hFTPSession);
      end;
    finally
      InternetCloseHandle(hInet);
    end;
    end;

  • Сергей М. © (25.06.09 12:15) [93]

    > Для доступа к FTP используется прокси


    Ну и где у тебя в коде используется прокси ?
    Нпапрямую же лезешь к ресурсу ..
  • SortoVaritu © (25.06.09 12:23) [94]
    Блин. Я уже и прокси не использую. На прямую делаю. Чтобы исключить любую вероятность его вмешательства.
  • Сергей М. © (25.06.09 12:40) [95]
    И какой же размер у 1.txt ?
  • Сергей М. © (25.06.09 12:45) [96]

    > На прямую делаю


    Доступ в Тырнет у тебя прямой или из корп.сети ?
  • SortoVaritu © (25.06.09 12:50) [97]
    У меня есть и такой и такой. Все это я делаю дома. Дома у меня доступ прямой. Прямое соединение через провайдера.
  • Сергей М. © (25.06.09 12:57) [98]
    Хочешь сказать, что способ доступа не влияет ?

    Т.е. один и тот же код (без использования прокси) не работает ни здесь ни там, возбуждая одно и тио же исключение на одной и той же строчке ?

    Ну хорошо.
    А мой код (один в один или без использования прокси) ТОЖЕ возбуждает исключение при разных условиях способах доступа ?
  • SortoVaritu © (25.06.09 13:21) [99]
    Так точно. FTPCommand выбрасывает одну и ту же ошибку
 
Конференция "Сети" » Вопрос по FtpGetFile
Есть новые Нет новых   [134435   +33][b:0][p:0.001]