Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.05.2009, 19:02   #1
sergoss
Пользователь
 
Регистрация: 17.12.2007
Сообщений: 12
По умолчанию ftp клиент на winsock

Пишу на kol_msk фтп клиент.
использую библиотеку kolftp
вот часть кода из этой библиотеки, которая вызывает у меня истерику:

Код:
procedure TKOLFtpClient.OnMSRead;
var s: string;
    m: integer;
begin

   m := 0;
   while fMainSock.Count > 0 do begin
      s := fMainSock.ReadLine(#10);
     
      if length(s) < 3 then break;
      if assigned(fOnFTPMsg) then fOnFTPMsg(@self, s);
      m := str2int(copy(s, 1, 3));
      if m > 0 then s := copy(s, 5, length(s) - 5);
      fLastCode := m;
      fLastAnsw := s;
      //ShowMessage(s);
      case m of
    125: if flPassive then fDataSock.DoConnect;
     150: if flPassive then fDataSock.DoConnect;
     213: fFileSize := str2int(s);
     215: fOpSystem := s;
     220: frWelcome.Add(s);
     227: SetupPasv(s);
     230: frWelcome.Add(s);
     331: begin
           s := fUserPass;
             
             SendStr('PASS ' + s);
          end;
      end;
   end;
   if (m = 200) and (ftpStatus = ftpLogin) then begin
      ftpStatus := ftpReady;
      if assigned(fOnFTPLog) then fOnFTPLog(@self);
   end;
   if (m = 215) and (ftpStatus = ftpLogin) then begin
      ftpStatus := ftpReady;
      if assigned(fOnFTPLog) then fOnFTPLog(@self);
   end;
   if (m = 220) then begin
      if assigned(fOnFTPCon) then fOnFTPCon(@self);
      login;
   end;
   if (m = 230) and (fFirstAck) then begin
      fFirstAck := False;
      SendStr('SYST');
   end;
   if m > 499 then begin
      fAcptSock.DoClose;
      fDataSock.DoClose;
      if not fPNoError then DoEvent(fOnFTPErr);
      ftpStatus := ftpReady;
   end;
end;
Это чтение ответа сервера и выбор соответсвующей команды.

А вот сама функция отправки команды:
Код:
function  TKOLFtpClient.SendStr;
begin
   result := False;
   if fMainSock.Connected then begin
      if assigned(fOnFTPMsg) then fOnFTPMsg(@self, s);
           fLastCode := 0;
                 fMainSock.SendString(s + #13#10);
                   while (fLastCode = 0) and fMainSock.Connected do begin
         fMainSock.ProcessMessages;
         applet.ProcessMessage;
      end;
      result := fMainSock.Connected;
   end else DoEvent(fOnFTPErr);
end;
И все вроде бы хорошо в этой библиотеке, да только когда подключаешься к серву лог выходит такой:

USER mymonye
220 ProFTPD 1.3.1 Server (ProFTPD Default Installation) [89.108.68.59]

USER mymonye
331 Password required for mymonye

PASS *******
331 Password required for mymonye

PASS *******
230 User mymonye logged in

SYST
503 You are already logged in!

CWD WWW
215 UNIX Type: L8

TYPE I
250 CWD command successful

SIZE udata.txt
200 Type set to I

PASV
550 udata.txt: No such file or directory

STOR udata.txt
227 Entering Passive Mode (89,108,68,59,255,224).

150 Opening BINARY mode data connection for udata.txt

226 Transfer complete


я хочу
1. Подключаюсь к серву
2. Авторизируюсь
3. Захожу в папку WWW
4. Закидываю файл udata.txt

Не понятно, почему логинится только со второго раза? Иногда вообще не логинится. почему проверяет размер файла udata.txt, которого еще даже и нету на серве.

Помогите настроить правильно.

Иль может кто знает, как заставить МСК работать вместе с indy.???

Последний раз редактировалось sergoss; 07.05.2009 в 20:25.
sergoss вне форума Ответить с цитированием
Старый 07.05.2009, 19:07   #2
sergoss
Пользователь
 
Регистрация: 17.12.2007
Сообщений: 12
По умолчанию

А вот и сами библиотеки.
Вложения
Тип файла: rar KOLFtp.rar (37.6 Кб, 19 просмотров)
sergoss вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
FTP клиент Andr Работа с сетью в Delphi 7 18.02.2016 12:22
Возможно-ли Клиент-серверное приложение типа Клиент(Pascal) а сервер(CGI)? Demol Работа с сетью в Delphi 1 21.04.2009 16:18
События WinSock telcomp Win Api 1 13.01.2009 09:26
FTP клиент. помогите serg-ph Работа с сетью в Delphi 4 23.11.2008 12:14
Клиент-сервер-клиент Кронос Работа с сетью в Delphi 3 24.08.2007 07:57