protokół ftp w c++
-
- Piegowaty Guziec
- Posty: 24
- Rejestracja: 05 gru 2009, 17:28
- Płeć: Mężczyzna
- Wersja Ubuntu: 9.10
- Środowisko graficzne: GNOME
- Architektura: x86
protokół ftp w c++
Cześć to mój pierwszy temat. Chciałbym się dowiedzieć jak użyć protokołu ftp w programie. Chciałbym napisać prosty serwer i klienta do niego. Nie mogę znaleźć żadnych informacji . Dodam że nie zależy mi na żadnych bibliotekach graficznych jak np : qt . Program ma działać na linuxie w konsoli i robić swoje . Za wszelką pomoc z góry dziękuje.
- beluosus
- Zakręcona Traszka
- Posty: 695
- Rejestracja: 01 paź 2006, 15:32
- Płeć: Mężczyzna
- Wersja Ubuntu: inny OS
- Środowisko graficzne: Xfce
- Architektura: x86
- Kontakt:
Odp: protokół ftp w c++
Po pierwsze skoro nie możesz znaleźć żadnych informacji to znaczy, że będzie szło bardzo ciężko... a teraz do rzeczy: na starcie powinieneś rozważyć dwa główne problemy:
- użyjesz biblioteki do ftp.
- sam napiszesz obsługę protokołu (RFC 959).
Przy drugim punkcie pojawiają się dwa podproblemy:
- użyjesz standardowych gniazd.
- skorzystasz z biblioteki do łączenia z internetem (np. C++ Socket Library).
Kiedy wybierzesz drogę możesz zacząć planować kolejne kwestie, takie jak opcje programu. Myślę, że łatwiej najpierw napisać aplikację kliencką (do testowania używać jakiś znany daemon FTP), a następnie jeśli starczy sił wziąć się za serwer.
Zawsze też możesz przejrzeć źródło jakiegoś programu ftp, jakich jest wiele.
- użyjesz biblioteki do ftp.
- sam napiszesz obsługę protokołu (RFC 959).
Przy drugim punkcie pojawiają się dwa podproblemy:
- użyjesz standardowych gniazd.
- skorzystasz z biblioteki do łączenia z internetem (np. C++ Socket Library).
Kiedy wybierzesz drogę możesz zacząć planować kolejne kwestie, takie jak opcje programu. Myślę, że łatwiej najpierw napisać aplikację kliencką (do testowania używać jakiś znany daemon FTP), a następnie jeśli starczy sił wziąć się za serwer.

Zawsze też możesz przejrzeć źródło jakiegoś programu ftp, jakich jest wiele.
- kabanek
- Zakręcona Traszka
- Posty: 592
- Rejestracja: 23 cze 2009, 20:34
- Płeć: Mężczyzna
- Wersja Ubuntu: 13.10
- Środowisko graficzne: Xfce
- Architektura: x86_64
- Kontakt:
Odp: protokół ftp w c++
coś chyba słabo szukasz...
a tak btw, to w Qt można napisać przecież konsolową aplikację, w wxWidgets też.
Kilka linków, które znalazłem w 3 min
a tak btw, to w Qt można napisać przecież konsolową aplikację, w wxWidgets też.
Kilka linków, które znalazłem w 3 min
ftp jest tak popularnym protokołem, że szczerze bym się zdziwił, gdybyś nic nie było
-
- Piegowaty Guziec
- Posty: 24
- Rejestracja: 05 gru 2009, 17:28
- Płeć: Mężczyzna
- Wersja Ubuntu: 9.10
- Środowisko graficzne: GNOME
- Architektura: x86
Odp: protokół ftp w c++
dzięki za linki . Mam pytanie ponieważ jestem początkujący w linuxie. jak połączyć bibliotekę z tego linka
http://nixbit.com/cat/system/networking/ftplib/#
z kompilatorem geany. Z góry dziękuję.
znalazłem też kod z biblioteką <ftplib.h>
EDIT:
Już mi nie chodzi o połączenie tej biblioteki z geany tyko może już być połączenie z gcc lub g++ .
Na pewno ktoś już to robił . Bardzo mi na tym zależy . Proszę o pomoc.
EDIT:
Męczę się już ponad dwa dni . Zainstalowałem w synaptiku pakiety ftplib3 i ftplib-dev , ściągnołem całą bibliotekę z linku wyżej . Do programu dodaję #include "scieżka do ftplib.h i ftplib.c". To też nic nie daje. Nie wiem co dalej robić . Proszę o pomoc. Znalazłem link do forum o tym samym . Mój angielski jest sredni. Może coś źle robię http://cboard.cprogramming.com/c-progra ... sible.html. Jak ktoś może to proszę o pomoc, bardzo mi na tym zależy.
http://nixbit.com/cat/system/networking/ftplib/#
z kompilatorem geany. Z góry dziękuję.
znalazłem też kod z biblioteką <ftplib.h>
Kod: Zaznacz cały
/* example toy application for ftplib
args are: hostname, login, passwd, cddir, lsdir (both possibly as empty
strings ""), long?
./example myftpserver mylogin mypassd "" "" 0
./example myftpserver mylogin mypasswd "mydir" "subdir" 1
*/
#include <stdio.h>
#include <stdlib.h>
#include "ftplib.h"
int error(char *msg)
{
fprintf(stderr, "%s\n", msg);
exit(1);
}
int process_entry(char *ent, unsigned len)
{
printf("%s\n", ent);
return 0;
}
int main(int argc, char **argv)
{
/* this enables printing of sent FTP commands */
ftp_debug=1;
/* and this printing of status responses */
ftp_verbose=1;
/* check number of arguments */
if (argc!=7) error("args");
/* open the FTP connection */
if (ftp_open(argv[1], argv[2], argv[3])) error("ftp_open");
/* perform cd only if a non empty string was given */
if (strlen(argv[4])) ftp_cd(argv[4]);
/* perform the directory listing */
ftp_ls(atoi(argv[6]), argv[5], process_entry);
/* the end */
ftp_close();
}
EDIT:
Już mi nie chodzi o połączenie tej biblioteki z geany tyko może już być połączenie z gcc lub g++ .
Na pewno ktoś już to robił . Bardzo mi na tym zależy . Proszę o pomoc.
EDIT:
Męczę się już ponad dwa dni . Zainstalowałem w synaptiku pakiety ftplib3 i ftplib-dev , ściągnołem całą bibliotekę z linku wyżej . Do programu dodaję #include "scieżka do ftplib.h i ftplib.c". To też nic nie daje. Nie wiem co dalej robić . Proszę o pomoc. Znalazłem link do forum o tym samym . Mój angielski jest sredni. Może coś źle robię http://cboard.cprogramming.com/c-progra ... sible.html. Jak ktoś może to proszę o pomoc, bardzo mi na tym zależy.

- kabanek
- Zakręcona Traszka
- Posty: 592
- Rejestracja: 23 cze 2009, 20:34
- Płeć: Mężczyzna
- Wersja Ubuntu: 13.10
- Środowisko graficzne: Xfce
- Architektura: x86_64
- Kontakt:
Odp: protokół ftp w c++
ale jaki masz błąd? Podczas kompilowania (czyli np nie znajduje Ci pliku ftplib.h) czy podczas linkowania?
-
- Piegowaty Guziec
- Posty: 24
- Rejestracja: 05 gru 2009, 17:28
- Płeć: Mężczyzna
- Wersja Ubuntu: 9.10
- Środowisko graficzne: GNOME
- Architektura: x86
Odp: protokół ftp w c++
daje screna . Bibliotekę wypakowałem na pulpicie a przykładowy program jest w katalogu winnt , tam gdzie 'ftplib.h'. Chciałbym napisać najprościejszego klienta ftp , ten kod który jest w gedit po skompilowaniu powinien wyświetlić zawartość serwera ftp . Programowania uczę się od roku w c, c++ bo jestem w technikum informatycznym i chciałbym pokazać na wrześniu że coś się nauczyłem. Dodam ,że na zdjęciu zaznaczyłem bibliotekę i ten przykładowy kod .
http://rapidshare.com/files/415199962/ftp.jpg

http://rapidshare.com/files/415199962/ftp.jpg

- dawwin
- Serdeczny Borsuk
- Posty: 202
- Rejestracja: 18 kwie 2009, 09:16
- Płeć: Mężczyzna
- Wersja Ubuntu: 11.04
- Środowisko graficzne: GNOME
- Architektura: x86
- Kontakt:
Odp: protokół ftp w c++
A jakim poleceniem to kompilujesz? I co ci wywala kompilator?
Moje programy - http://dawwin.users.sourceforge.net/
Nie pomagam na PW
Nie pomagam na PW
- kabanek
- Zakręcona Traszka
- Posty: 592
- Rejestracja: 23 cze 2009, 20:34
- Płeć: Mężczyzna
- Wersja Ubuntu: 13.10
- Środowisko graficzne: Xfce
- Architektura: x86_64
- Kontakt:
Odp: protokół ftp w c++
nie includuje się plików *.c
Wklej tez komunikaty wyrzucane przez kompilator
Wklej tez komunikaty wyrzucane przez kompilator
-
- Piegowaty Guziec
- Posty: 24
- Rejestracja: 05 gru 2009, 17:28
- Płeć: Mężczyzna
- Wersja Ubuntu: 9.10
- Środowisko graficzne: GNOME
- Architektura: x86
Odp: protokół ftp w c++
Kod: Zaznacz cały
lucjan@lucjan-laptop:~/Pulpit/ftplib-3.1-1/winnt$ gcc ftp.c -lftp
/tmp/ccwTZ7BA.o: In function `main':
ftp.c:(.text+0x28f3): undefined reference to `FTP_OPEN'
ftp.c:(.text+0x2922): undefined reference to `ftp_cd'
ftp.c:(.text+0x294e): undefined reference to `ftp_ls'
ftp.c:(.text+0x2953): undefined reference to `Ftp_Close'
collect2: ld returned 1 exit status
lucjan@lucjan-laptop:~/Pulpit/ftplib-3.1-1/winnt$
EDIT:
Pewnie jesteście ode mnie starsi . Studiujecie lub skończyliście studia . Jak wy pisaliście jakieś klienty ftp ?
- dawwin
- Serdeczny Borsuk
- Posty: 202
- Rejestracja: 18 kwie 2009, 09:16
- Płeć: Mężczyzna
- Wersja Ubuntu: 11.04
- Środowisko graficzne: GNOME
- Architektura: x86
- Kontakt:
Odp: protokół ftp w c++
A jeśli skompilujesz z parametrami -Wall -pedantic to zobaczysz coś takiego:
Jeśli chodzi o drugie pytanie to ja jak pisałem serwer ftp to sam programowałem obsługę protokołu za pomocą gniazd. Jest to trudniejsze, ale dużo się można nauczyć
co oznacza, że nagłówek #include <ftplib.h> nie zawiera takich funkcji. Znalazłem w nim takie:main.c:39: warning: implicit declaration of function ‘ftp_open’
main.c:42: warning: implicit declaration of function ‘ftp_cd’
[...]
Chyba, że pobrałem inną bibliotekę niż ty.extern void FtpInit(void);
extern char *FtpLastResponse(netbuf *nControl);
extern int FtpConnect(const char *host, netbuf **nControl);
extern int FtpOptions(int opt, long val, netbuf *nControl);
extern int FtpLogin(const char *user, const char *pass, netbuf *nControl);
extern int FtpAccess(const char *path, int typ, int mode, netbuf *nControl,
netbuf **nData);
extern int FtpRead(void *buf, int max, netbuf *nData);
extern int FtpWrite(void *buf, int len, netbuf *nData);
extern int FtpClose(netbuf *nData);
extern int FtpSite(const char *cmd, netbuf *nControl);
extern int FtpSysType(char *buf, int max, netbuf *nControl);
extern int FtpMkdir(const char *path, netbuf *nControl);
extern int FtpChdir(const char *path, netbuf *nControl);
extern int FtpCDUp(netbuf *nControl);
extern int FtpRmdir(const char *path, netbuf *nControl);
extern int FtpPwd(char *path, int max, netbuf *nControl);
extern int FtpNlst(const char *output, const char *path, netbuf *nControl);
extern int FtpDir(const char *output, const char *path, netbuf *nControl);
extern int FtpSize(const char *path, int *size, char mode, netbuf *nControl);
extern int FtpModDate(const char *path, char *dt, int max, netbuf *nControl);
extern int FtpGet(const char *output, const char *path, char mode,
netbuf *nControl);
extern int FtpPut(const char *input, const char *path, char mode,
netbuf *nControl);
extern int FtpRename(const char *src, const char *dst, netbuf *nControl);
extern int FtpDelete(const char *fnm, netbuf *nControl);
extern void FtpQuit(netbuf *nControl);
Jeśli chodzi o drugie pytanie to ja jak pisałem serwer ftp to sam programowałem obsługę protokołu za pomocą gniazd. Jest to trudniejsze, ale dużo się można nauczyć
Moje programy - http://dawwin.users.sourceforge.net/
Nie pomagam na PW
Nie pomagam na PW
- kabanek
- Zakręcona Traszka
- Posty: 592
- Rejestracja: 23 cze 2009, 20:34
- Płeć: Mężczyzna
- Wersja Ubuntu: 13.10
- Środowisko graficzne: Xfce
- Architektura: x86_64
- Kontakt:
Odp: protokół ftp w c++
hmm... dostałem ten sam błąd co Ty.
Jeśli nikt nie znajdzie odpowiedzi, to proponuję skorzystać np z Qt ale w konsoli. Tam jest gotowa klasa do ftp.
Powiem Ci, że czasem szkoda czasu na takie bawienie się - lepiej pisać programy
Jeśli nikt nie znajdzie odpowiedzi, to proponuję skorzystać np z Qt ale w konsoli. Tam jest gotowa klasa do ftp.
Powiem Ci, że czasem szkoda czasu na takie bawienie się - lepiej pisać programy

- dawwin
- Serdeczny Borsuk
- Posty: 202
- Rejestracja: 18 kwie 2009, 09:16
- Płeć: Mężczyzna
- Wersja Ubuntu: 11.04
- Środowisko graficzne: GNOME
- Architektura: x86
- Kontakt:
Odp: protokół ftp w c++
Odpowiedź jest taka, że w tej bibliotece można korzystać z funkcji, które wkleiłem dwa posty wyżej i powinno działać.
Niemniej jednak też polecam Qt, chyba, że czujesz się na siłach, aby pisać własną implementację protokołu
Niemniej jednak też polecam Qt, chyba, że czujesz się na siłach, aby pisać własną implementację protokołu
Moje programy - http://dawwin.users.sourceforge.net/
Nie pomagam na PW
Nie pomagam na PW
- beluosus
- Zakręcona Traszka
- Posty: 695
- Rejestracja: 01 paź 2006, 15:32
- Płeć: Mężczyzna
- Wersja Ubuntu: inny OS
- Środowisko graficzne: Xfce
- Architektura: x86
- Kontakt:
Odp: protokół ftp w c++
Ja polecam curla, tutaj przykład: http://curl.haxx.se/libcurl/c/ftpupload.html
Żeby się zalogować na konkretne konto trzeba ustawić użytkownika i hasło:
Curl jest bardzo popularny (dobrze udokumentowany, przykłady), ma duże możliwości i wiele zastosowań więc powinien wiele nauczyć.
Żeby się zalogować na konkretne konto trzeba ustawić użytkownika i hasło:
Kod: Zaznacz cały
curl_easy_setopt(curl, CURLOPT_USERNAME, "beluosus");
curl_easy_setopt(curl, CURLOPT_PASSWORD, "tajne0x0haslo");
-
- Piegowaty Guziec
- Posty: 24
- Rejestracja: 05 gru 2009, 17:28
- Płeć: Mężczyzna
- Wersja Ubuntu: 9.10
- Środowisko graficzne: GNOME
- Architektura: x86
Odp: protokół ftp w c++
dobre wieści . Udało mi się napisać program który się kompiluje . To przede wszystkim dzięki wam a zwłaszcza dawwinowi .
kod programu jest dostosowany do mojej sieci i konta na serwerze na windowsie (serwer filezilla) na którym jest user ftp bez hasła
proszę was jeszcze o jedno . Nauczyłem się programować sockety (bibioteka sys/socket.h) tak podstawowo i uczę się dalej z książki "programowanie usług sieciowych".
Tutaj dałem do przetłumaczenia link : http://translate.google.pl/translate?hl ... libpp.html. Nie mogę znależć jakiegoś przykładowego kodu z tymi funkcjami tylko z tymi starszymi co są na początku tematu. Możecie coś napisać i podesłać . Z góry dzięki
kod programu jest dostosowany do mojej sieci i konta na serwerze na windowsie (serwer filezilla) na którym jest user ftp bez hasła
Kod: Zaznacz cały
#include <stdio.h>
#include "ftplib.h"
int main()
{
netbuf *ftpc ;
FtpInit();
if ( FtpConnect("192.168.1.2", &ftpc) ) printf("połączyles sie "); else
perror("ERROR\n\n");
FtpLogin("ftp", "" , ftpc);
FtpQuit(ftpc);
}
Tutaj dałem do przetłumaczenia link : http://translate.google.pl/translate?hl ... libpp.html. Nie mogę znależć jakiegoś przykładowego kodu z tymi funkcjami tylko z tymi starszymi co są na początku tematu. Możecie coś napisać i podesłać . Z góry dzięki
- kabanek
- Zakręcona Traszka
- Posty: 592
- Rejestracja: 23 cze 2009, 20:34
- Płeć: Mężczyzna
- Wersja Ubuntu: 13.10
- Środowisko graficzne: Xfce
- Architektura: x86_64
- Kontakt:
Odp: protokół ftp w c++
Kod: Zaznacz cały
#include <stdio.h>
#include "ftplib.h"
int main()
{
netbuf *ftpc ;
FtpInit();
if ( FtpConnect("localhost", &ftpc) ) printf("połączyles sie\n"); else
perror("ERROR\n\n");
FtpLogin("bartek", "kaban" , ftpc);
FtpMkdir("katalog", ftpc);
FtpQuit(ftpc);
}
- dawwin
- Serdeczny Borsuk
- Posty: 202
- Rejestracja: 18 kwie 2009, 09:16
- Płeć: Mężczyzna
- Wersja Ubuntu: 11.04
- Środowisko graficzne: GNOME
- Architektura: x86
- Kontakt:
Odp: protokół ftp w c++
Kod: Zaznacz cały
#include <stdio.h>
#include <ftplib.h>
#define TBLEN 256
#define FTPERROR fprintf(stderr, "Wystapil blad\n"); \
FtpQuit(cftp); \
return -1;
int main(int argc, char **argv)
{
netbuf *cftp;
char textbuffer[TBLEN] = {0};
/* Sprawdzamy argumenty */
if (argc < 5) {
fprintf(stderr, "Uzycie: [adres ip] [login] [haslo] [katalog (np. /)]\n");
return -1;
}
/* Inicjalizacja */
FtpInit();
/* Laczenie do serwera */
printf("Laczenie z %s\n", argv[1]);
if (FtpConnect(argv[1], &cftp) != 1) {
fprintf(stderr, "Polaczenie z %s nieudane\n", argv[1]);
return -1;
}
/* Logowanie. */
printf("Polaczono, logowanie\n", argv[1]);
if (FtpLogin(argv[2], argv[3], cftp) != 1) {
fprintf(stderr, "Logowanie nieudane\n");
FtpQuit(cftp);
return -1;
}
/* Sprawdzamy, jaki system znajduje sie na serwerze. */
printf("Sprawdzanie systemu na serwerze\n");
if (FtpSysType(textbuffer, TBLEN-1, cftp) != 1) {
FTPERROR
}
printf("System operacyjny na serwerze: %s\n", textbuffer);
printf("Pobieranie zawartosci katalogu %s\n", argv[4]);
/* Pobieramy liste plikow z danego w argv[4] katalogu i drukujemy go na ekranie.
* Jesli pierwszy argument do funkcji to NULL to funkcja drukuje do stdout, jesli nie
* to drukuje do zadanego pliku */
if (FtpDir(NULL, argv[4], cftp) != 1) {
FTPERROR
}
/* Konczymy polaczenie */
FtpQuit(cftp);
return 0;
}
Otwierasz terminal. Wpisujesz polecenie
W otwartym programie telnet wpisujesz polecenietelnet [adres_serwera] 21
Serwer odpowie:USER [nazwa_uzytkownika]
wpisujesz331 Password required for [nazwa_uzytkownika]
jesli login i hasło są poprawne to zobaczysz komunikatPASS [haslo]
Teraz aby zobaczyc jaki system jest na serwerze wpisujesz230 User [nazwa_uzytkownika] logged in
U mnie wyswietla sięSYST
A teraz chcemy wyświetlić zawartość katalogu / na serwerze.215 UNIX Type: L8
Wpisujesz więc polecenie
CWD /
Powinieneś zobaczyć
I teraz bardziej skomplikowana część.250 CWD command successful
Otwieramy drugie połączenie (bo FTP korzysta z dwóch). Wpisujemy polecenie
Serwer odpowiePASV
Pierwsze cztery wartości w nawiasie to adres IP, a ostatnie dwie227 Entering Passive Mode (127,0,0,1,212,19).
to numer portu. Obliczasz go tak: piąta wartość razy 256 plus szósta
czyli w moim przypadku 212*256+19.
Otwierasz drugą konsolę i wpisujesz
I ostatecznie w tym pierwszym terminalu wpisujesztelnet [podany w odpowiedzi adres ip] [numer obliczonego portu]
W drugim terminalu zobaczysz listę katalogów z serwera.LIST
Połączenie kończysz wpisując
W przypadku pisania własnej implementacji tworzy się program, który będzie robił między innymi to, co ja Ci napisałem za pomocą funkcji do obsługi gniazd.QUIT
Mam nadzieję, że pomogłem

Moje programy - http://dawwin.users.sourceforge.net/
Nie pomagam na PW
Nie pomagam na PW
-
- Piegowaty Guziec
- Posty: 24
- Rejestracja: 05 gru 2009, 17:28
- Płeć: Mężczyzna
- Wersja Ubuntu: 9.10
- Środowisko graficzne: GNOME
- Architektura: x86
Odp: protokół ftp w c++
Dzięki za odpowiedzi. Trochę mnie nie było . Postanowiłem napisać pseudo klienta ftp z kilkoma funkcjami ale mam problem bo zacząłem się uczyć od c++ i teraz muszę napisać program w c . Nawet printf() i scanf() troche mnie przeraziły ale dałem sobie radę . Mam problem z funkcją numeracja . Jak pisałem w cpp to wszystko było string a tu ciągle tablice charowe . chciałbym żeby zamiast tego scanfa do wczytywania polecenia było coś w rodzaju ; żeby wczytywało całą linię ze spacjami itd.
Kod: Zaznacz cały
getline (cin , polecenie, "\n" )
Kod: Zaznacz cały
#include <stdio.h>
#include <string>
// funkcje
void pobierz (void);
void wyslij (void);
void DIR (void);
void utworz_katalog (void);
void usun_katalog (void);
// definicje funkcji zrobie pozniej
void pomylka (void)
{
printf("nie rozpoznane polecenie\n");
}
void pomoc (void)
{
printf("\n#dostepne funkcje \n");
printf("# pobierz wyslij DIR\n");
printf("# utworz_katalog usun_katalog pomoc\n\n");
}
// przydziela numery poleceniom
int numeracja ( char zadanie[] )
{
int numer;
if (zadanie == "DIR" ) numer = 1; else
if (zadanie == "pobierz" ) numer = 2; else
if (zadanie == "wyslij" ) numer = 3; else
if (zadanie == "utworz_katalog" ) numer = 4; else
if (zadanie == "usun_katalog" ) numer = 5; else
if (zadanie == "pomoc" ) numer = 6; else numer = 7;
return numer;
}
int main()
{
char IP[20] , login[20] , haslo[20] , polecenie[30];
char koniec[]="koniec";
printf("podaj IP serwera : ");
scanf("%s",IP);
printf("podaj login : ");
scanf("%s",login);
printf("podaj haslo : ");
scanf("%s",haslo);
printf("symulacja || zalogowales sie . . .\n");
while ( 1 )
{
printf("%s : ", login);
scanf ("%s", polecenie);
if (polecenie == koniec)
{
printf("program konczy swoja prace . . .\n");
break;
}
else
{
int numer_zadania=numeracja(polecenie);
// **********************************
switch ( numer_zadania )
{
case 1:
{
printf("DIR\n\n");
break;
}
case 2:
{
printf("pobierz\n\n");
break;
}
case 3:
{
printf("wyslij\n\n");
break;
}
case 4:
{
printf("utworz_katalog\n\n");
break;
}
case 5:
{
printf("usun_katalog\n\n");
break;
}
case 6:
{
pomoc();
break;
}
case 7:
{
pomylka();
break;
}
}
}
// **********************************
}
}
- kabanek
- Zakręcona Traszka
- Posty: 592
- Rejestracja: 23 cze 2009, 20:34
- Płeć: Mężczyzna
- Wersja Ubuntu: 13.10
- Środowisko graficzne: Xfce
- Architektura: x86_64
- Kontakt:
Odp: protokół ftp w c++
Kod: Zaznacz cały
ssize_t getline (char **lineptr, size_t *n, FILE *stream)
-
- Piegowaty Guziec
- Posty: 24
- Rejestracja: 05 gru 2009, 17:28
- Płeć: Mężczyzna
- Wersja Ubuntu: 9.10
- Środowisko graficzne: GNOME
- Architektura: x86
Odp: protokół ftp w c++
problem z getline rozwiązany . Użyłem fgets tylko czy ktoś widzi dlaczego są błędy z funkcją numeracja .
poprawiony kod :
o i czy jak skonczę tego klienta to będzie on użyteczny jak inny "markowy" klient ?
poprawiony kod :
Kod: Zaznacz cały
#include <stdio.h>
#include <string>
// funkcje
void pobierz (void);
void wyslij (void);
void DIR (void);
void utworz_katalog (void);
void usun_katalog (void);
// definicje funkcji zrobie pozniej
void pomylka (void)
{
printf("nie rozpoznane polecenie\n");
}
void pomoc (void)
{
printf("\n#dostepne funkcje \n");
printf("# pobierz wyslij DIR\n");
printf("# utworz_katalog usun_katalog pomoc\n\n");
}
// przydziela numery poleceniom
int numeracja ( char zadanie[] )
{
int numer;
if (zadanie == "DIR" ) numer = 1; else
if (zadanie == "pobierz" ) numer = 2; else
if (zadanie == "wyslij" ) numer = 3; else
if (zadanie == "utworz_katalog" ) numer = 4; else
if (zadanie == "usun_katalog" ) numer = 5; else
if (zadanie == "pomoc" ) numer = 6; else numer = 7;
return numer;
}
int main()
{
char IP[20] , login[20] , haslo[20] , polecenie[30];
char koniec[]="koniec";
printf("podaj IP serwera : ");
scanf("%s",IP);
printf("podaj login : ");
scanf("%s",login);
printf("podaj haslo : ");
scanf("%s",haslo);
printf("symulacja || zalogowales sie . . .\n");
while ( 1 )
{
printf("%s : ", login);
fgets(polecenie,sizeof polecenie,stdin);
if (polecenie == koniec)
{
printf("program konczy swoja prace . . .\n");
break;
}
else
{
int numer_zadania=numeracja(polecenie);
// **********************************
switch ( numer_zadania )
{
case 1:
{
printf("DIR\n\n");
break;
}
case 2:
{
printf("pobierz\n\n");
break;
}
case 3:
{
printf("wyslij\n\n");
break;
}
case 4:
{
printf("utworz_katalog\n\n");
break;
}
case 5:
{
printf("usun_katalog\n\n");
break;
}
case 6:
{
pomoc();
break;
}
case 7:
{
pomylka();
break;
}
}
}
// **********************************
}
}
o i czy jak skonczę tego klienta to będzie on użyteczny jak inny "markowy" klient ?
- dawwin
- Serdeczny Borsuk
- Posty: 202
- Rejestracja: 18 kwie 2009, 09:16
- Płeć: Mężczyzna
- Wersja Ubuntu: 11.04
- Środowisko graficzne: GNOME
- Architektura: x86
- Kontakt:
Odp: protokół ftp w c++
Jeśli będzie dobrze dopracowany to możliwe, że tak
Moje programy - http://dawwin.users.sourceforge.net/
Nie pomagam na PW
Nie pomagam na PW
Kto jest online
Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 10 gości