The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
ftp login, !*! glisy, 10-Мрт-05, 12:38  [смотреть все]
Hi!
Возникла необходимость написать прогу которая коннектиться к ftp серверу и приозводит на нём некоторые действия. НО не могу залогиниться!!!!! Возможно кусочек кода поможет ответить на вопрос. Зараннее спасибо!
/*
тут я открываю сокет, произвожу коннект и т.д.
*/
printf("CONNECT!!!\n");

read(sockfd, otvet, sizeof(otvet)); /*sockfd дескриптор otvet это char[200]*/

printf("%s", otvet);

snprintf(buff, sizeof(buff), "USER anonymous\r\n");
write(sockfd, buff, sizeof(buff)); /*char buff[200]*/
printf("%s", buff);
read(sockfd, otvet, sizeof(otvet));
printf("%s", otvet);

snprintf(buff, sizeof(buff), "PASS anonymous\r\n");
write(sockfd, buff, sizeof(buff));
printf("%s", buff);
read(sockfd, otvet, sizeof(otvet));
printf("%s", otvet);
printf("\n");
return 0;

/*
Причём "USER anonymous" получает и не ругаеться а говорю PASS мне сообщают что надо залогиниться использую USER PASS.
Просто уже не знаю в чем же дело!
*/

  • ftp login, !*! MaximKuznetsov, 12:48 , 10-Мрт-05 (1)
    >snprintf(buff, sizeof(buff), "USER anonymous\r\n");
    >write(sockfd, buff, sizeof(buff)); /*char buff[200]*/
    И зачем ты ему туда 200 байт напихал ?

    >snprintf(buff, sizeof(buff), "PASS anonymous\r\n");
    >write(sockfd, buff, sizeof(buff));
    Та же самая фигня - передавай только ту информацию которую надо, а несь буфер - в нем мусора до вола.

    Плюс к тому к качестве пароля неплохо использовать нечто похожее не email - строчку с собачкой

    >/*
    >Причём "USER anonymous" получает и не ругаеться а говорю PASS мне сообщают
    >что надо залогиниться использую USER PASS.
    >Просто уже не знаю в чем же дело!
    >*/

    P.S проще было-бы все это сделать на expect`е ...

    • ftp login, !*! glisy, 12:52 , 10-Мрт-05 (2)
      Спасибо большое....


      • ftp login, !*! rgo, 07:02 , 15-Мрт-05 (3)
        Совет из моего личного опыта, сделай так (просто рази удобства):

        FILE* sockf;

        sockf = fdopen (sockfd, "r+");

        fputs (sockf, "USER anonymous\r\n");

        ... и так далее.


        • ftp login, !*! glisy, 13:25 , 17-Мрт-05 (4)
          Всем большое спасибо.. сейчас уже много работает, но есть проблемма до решения которой я никак не могу додуматься...Проблема такая : нужно получить список ВСЕХ файлов и директорий с ftp сервера. Как это начал раелизовывать я и на чём остановился: 1 получаю список файлов и с помошью функции sscanf() понимаю что первый файл являеться директорией или обычным файлом (drwxrwxrwx) а из конца беру имя этого файли и если эта директория то говорю cwd "%s" dirname таким образом я дохожу до того момента когда директории заончаться (опято же я простоматриваю только первую директорию в первой директории и т.д. ну а это меня не устраивает так как нужно получить полный список файлов) подскажите пожалуйста советом или ссылкой буду крайне признателен!!!

          • ftp login, !*! Maxim Kuznetsov, 13:52 , 17-Мрт-05 (5)
            >Всем большое спасибо.. сейчас уже много работает, но есть проблемма до решения
            >которой я никак не могу додуматься...Проблема такая : нужно получить список
            >ВСЕХ файлов и директорий с ftp сервера. Как это начал раелизовывать
            >я и на чём остановился: 1 получаю список файлов и с
            >помошью функции sscanf() понимаю что первый файл являеться директорией или обычным
            >файлом (drwxrwxrwx) а из конца беру имя этого файли и если
            >эта директория то говорю cwd "%s" dirname таким образом я дохожу
            >до того момента когда директории заончаться (опято же я простоматриваю только
            >первую директорию в первой директории и т.д. ну а это меня
            >не устраивает так как нужно получить полный список файлов) подскажите пожалуйста
            >советом или ссылкой буду крайне признателен!!!
            Обычный рекурсивный обход дерева - что тут такого ?
            (типа псевдокод)
            получаем список файлов текущего каталога,
            для каждого файла
              если это симлинк на каталог, то в первом варианте игнорируем
              если это каталог - cd в него, рекурсивный вызов
              если обычный файл - добавляем в полный список
            (все - получен список всех файлов)
            собственно остается решить что делать с символическими ссылками, для избежания зацикливания и + возможно физически огранить глубину рекурсии,
            по тем же соображениям.
            • ftp login, !*! glisy, 16:47 , 17-Мрт-05 (6)
              >Обычный рекурсивный обход дерева - что тут такого ?
              >(типа псевдокод)
              >получаем список файлов текущего каталога,
              >для каждого файла
              >  если это симлинк на каталог, то в первом варианте игнорируем
              >
              >  если это каталог - cd в него, рекурсивный вызов
              >  если обычный файл - добавляем в полный список
              >(все - получен список всех файлов)
              >собственно остается решить что делать с символическими ссылками, для избежания зацикливания и
              >+ возможно физически огранить глубину рекурсии,
              >по тем же соображениям.

              Дело в том что это достаточно непросто в реализации из за того что
              1 как можно наверное понять из моих вопросов я только недавно начал всерьез заниматься программированием
              2 Если представить работу программы что мы видим: получаем список файлов берём первый и проверяем директория это или нет. Если да то говорим cwd <имя директории> и попадаем в неё. В ней тоже огромное количество директорий из которых я выбираю первыую и вхожу туда. Как предлагаеться действовать когда дойдем до того момента когда директории закончаться? Или я принципиально чего то не понимаю и ошибка в самом методе???

              • ftp login, !*! MaximKuznetsov, 19:45 , 17-Мрт-05 (7)
                потренеруйтесь на локальной файловой системе ;-)
                ( если память не изменяет, то в info про opendir есть пример с рекурсивным обходом)
                почитайте книжек, посмотрите что такое рекурсия..
                Рано видимо Вы деретесь за работу с удалёнными системами :(



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру