На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
Дорогие друзья! Поздравляем вас с днём Победы!
msm.ru
  
    > FTP-клиент, команда ABOR
      К сожалению ничего не нашел ни на этом форуме, ни в инете вообще по этому поводу - везде в описании протокола написано, что команда ABOR прекращает передачу файла. На деле все выглядит совершенно иначе - посылаю команду RETR, получаю ответ 1xx от сервера и начинаю принимать файл... при нажатии на кнопку STOP посылаю команду ABOR, на которую сервер категорически отказывается реагировать и продолжает пересылку файла! никак не пойму в чем дело! да и вообще после команды RETR сервер ни на что не хочет реагировать, пока не передаст файл... это я делаю что-то не так, или сервер глючный? скорей всего первое...
        Ну почему же в rfc есть. ABOR кстати нужно посылать с символами терминала(telnet), кроме того эту команду желательно посылать как сверхсрочную(MSG_OOB). Однако далеко не все серверы это нормально воспринимают и практика показала, что лучше просто делать shutdown, а потом closesocket сокету соединения данных. В своём клиенте( Ftp_man ) я шлю ABOR, только когда качаю в главном потоке.
        Сообщение отредактировано: Jenya -
          Jenya, в разделе "Наши исходники" я нашел только несколько функций вашего клиента - посылка команды, проверка на готовность и тд... самой посылки ABOR не видел. Можно вот поподробней либо про первый способ с командами telnet, либо про второй с shutdown?
            Самый простой способ :

            ExpandedWrap disabled
              shutdown(hDataSock,SD_BOTH);
              closesocket(hDataSock);


            Только после прерывания, как и после приёма файла нужно прочитать из соединения комманд ответ сервера.
            Сообщение отредактировано: Jenya -
              супер! все работает! спасибо! Вот только я не пойму, почему бы не делать серверы без этих заморочек, почему бы серверу не только просто передавать файл, а еще бы одновременно слушать управляющее соединение на наличие команд
                А как насчет команды ABOR при передачи от клиента на сервер командой STOR?
                Насколько я поняла, команда ABOR, это всегда ненормальное прерывание.

                Цитата
                Сервер всегда осуществляет активное открытие соединения данных. Обычно сервер также осуществляет активное закрытие соединения данных, за исключением тех случаев, когда клиент отправляет файл на сервер в потоковом режиме, который требует, чтобы клиент закрыл соединение (что делается с помощью уведомления сервера о конце файла).


                Но как тогда выглядит уведомление о конце файла? можно ли просто закрыть соединение и сокет (shutdown() + closesocket())?
                  При STOR лучше просто соединение закрыть.
                  0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                  0 пользователей:


                  Рейтинг@Mail.ru
                  [ Script execution time: 0,0225 ]   [ 16 queries used ]   [ Generated: 10.05.24, 12:05 GMT ]