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 есть пример с рекурсивным обходом) почитайте книжек, посмотрите что такое рекурсия.. Рано видимо Вы деретесь за работу с удалёнными системами :(
|