Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2006.06.04;
Скачать: [xml.tar.bz2];

Вниз

ftp клиент своими руками   Найти похожие ветки 

 
newprogrammer   (2006-01-28 15:00) [0]

всем привет.
народ подскажите почему так происходит :
пытаюсь получить список ресурсов FTP сервера, используя сокеты,
а в ответ от сервера( 8 раз из 10) получаю ошибку о не возможности подключится
к моему серверному сокету(error 425). в качестве серверного сокета высеупает  
Tserversocket в блокированном режиме в обравотчике события
(ongetthread) создаю нить прослушки 1* .
запросы FTP серверу отправляю клиентом тоже в блок режиме 2* .

причем нет никакой разницы в одном или в разных проектах расположены клиент и сервер
( описанные ниже)
сам  FTP сервер запущен на томже компе что и моя прога
и все ето на ноутбуке

-------------------------------------------------------------
1*

procedure TMyServerThread.ClientExecute;
var MySocket: TWinSocketStream;
      s:string;
   begin
  MySocket := TWinSocketStream.Create(ClientSocket, 20000);
 try

   while (not Terminated) and ClientSocket.Connected do begin
    if MySocket.WaitForData(2000) then begin
      if  ClientSocket.ReceiveLength=0 then break;
          s:=ClientSocket.ReceiveText;
         form1.Memo1.Lines.Add("<<- "+s);
    end;
   end;
 finally
   MySocket.Free;
   ClientSocket.Close;

 end;
end;

-----------------------------------


2*

while (not Terminated) and Client.Socket.Connected do
        begin
           if MySocket.WaitForData(100) then
           begin
            if client.Socket.ReceiveLength=0 then break;
            s:=client.Socket.ReceiveText;

              if pos("220",s)>0 then
               begin
               client.Socket.SendText ("USER Anonymous"+crlf);
               inc(step);
               end;

               if (pos("331",s)>0) and (step=1)then
                begin
                client.Socket.SendText ("PASS net@net.net"+crlf);
                inc(step);
                end;


 
Digitman ©   (2006-01-30 11:55) [1]


> получаю ошибку о не возможности подключится
> к моему серверному сокету


ты используешь активный FTP-протокол ?


 
newprogrammer   (2006-01-30 18:00) [2]

а можно по подробнее чем отличается работа клиента в пасивном и активном режиме ?

в том описании которое есть у меня нет ни каких упоминаний об етом


 
clickmaker ©   (2006-01-30 18:02) [3]


> newprogrammer   (30.01.06 18:00) [2]

http://forum.five.mhost.ru/kb2/index.php/FTP


 
newprogrammer   (2006-01-30 22:20) [4]

выходит что моя прога работала в активном режиме

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


 
newprogrammer   (2006-01-30 23:39) [5]

да вот ешо  
и бязательное ли условие разница в портах на +1


 
Digitman ©   (2006-01-31 08:28) [6]


> выходит что моя прога работала в активном режиме


Что, сама по себе ?


 
newprogrammer   (2006-01-31 18:00) [7]

нет не сама посебе .
просто на стороне моего клиента, для приема данных, был запущен СЕРВЕРСОКЕТ на кторый коннектился клиент от FTP сервака
и это хорошо видно из постановки вопроса :))


 
newprogrammer   (2006-02-01 00:57) [8]

да вот ешо  
и бязательное ли условие разница в портах на +1 между моим клиентом
и клиентом FTP сервера который конектится на мой слушающий сокет


 
Digitman ©   (2006-02-01 08:38) [9]


> newprogrammer   (01.02.06 00:57) [8]


http://www.faqs.org/rfcs/rfc959.html


 
newprogrammer   (2006-02-02 18:56) [10]

с отправкой первого  запроса на получение содержания корневой папки
все получилось .
тепер другая проблема : при повторном коннекте FTP сервака на мой серверный сокет получаю сообщение (4хх ) тобиш его клиент не смог подключится на мой серверсокет .

при трассировке видно что после получения первой порции данных от FTP
соедимение разрывает FTP server  но повторно подключатся на етот же порт не желает
если сразу после приема данных от FTP servera (на етомже соединении ) передать ему несколько байт, причом любых ,то соединение также обрывает
FTP server .  но в етом случае происходит следующий коннект при запросе
LIST на следущюю директорию и все вроде работает.
но вет так не должно быть. !

почему не происходит повторный коннект на тодже порт что и был использован при приеме первой партии данных от сервера FTP  ?????


 
Digitman ©   (2006-02-03 08:40) [11]

вероятно, у тебя ошибка в логике использования TServerSocket


 
Digitman ©   (2006-02-03 09:43) [12]

А чем, собссно, вызвано непреодолимое желание усложнять себе жизнь, реализуя именно активный протокол ? Чем пассивный не устроил ?


 
newprogrammer   (2006-02-03 17:07) [13]

может я и не прав
но чтото мне подсказывает что могут возникнуть проблемы при стечении
трех обстоя тельств
1. фаервол  
2. кривые руки настройщика FTP сервера
3 . пассивный протокол FTP

тобиш как поведет себя сервак FTP на пассивном протоколе если на томже компе стоит фаервол ?


 
Digitman ©   (2006-02-06 10:21) [14]


> как поведет себя сервак FTP на пассивном протоколе если
> на томже компе стоит фаервол ?


Нормально он себя поведет.



Страницы: 1 вся ветка

Форум: "Сети";
Текущий архив: 2006.06.04;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.039 c
2-1147783544
seleman
2006-05-16 16:45
2006.06.04
TGroupbox


15-1146904170
IronHawk
2006-05-06 12:29
2006.06.04
XML &amp; XSLT шаблоны, где глюк в стыковке?


4-1142155221
Handle
2006-03-12 12:20
2006.06.04
Снова процессы


2-1147874048
13
2006-05-17 17:54
2006.06.04
Снова График


6-1135231175
Asail
2005-12-22 08:59
2006.06.04
Вопрос по авторизации в IIS под CGI (delphi)...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский