Вниз
Скачать: CL | DM;

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 вся ветка

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.029 c
4-1141718189
Handle
2006-03-07 10:56
2006.06.04
Иконка в ListView


15-1147155617
grisme
2006-05-09 10:20
2006.06.04
Серверы для отправки СМС есть?


2-1148017662
ZV
2006-05-19 09:47
2006.06.04
Save and Load


15-1146887520
Little)Lamer
2006-05-06 07:52
2006.06.04
C++


11-1127710464
DmiSb
2005-09-26 08:54
2006.06.04
Как нарисовать кнопочку в EditBoxe




   Наверх