Administrator

Data inscrierii: 18/Aug/2007
Mesaje: 35
|
|
Un client ftp. Are posibilitatea doar de a incarca si descarca fisiere pe un server FTP.
Se foloseste numai din CMD cu comanda: ft.exe p 127.0.0.1 21 user parola fisier fisier2
Unde ft.exe este executabilul rezultat dupa compilare.
COD:
=============
/* Necomplicat client FTP, doar incarcare && descarcare. */
#define WIN32_LEAN_AND_MEAN
#include <stdio.h>
#include <tchar.h>
#include <conio.h>
#include <ctype.h>
#include <direct.h>
#include <iostream>
#include <stdlib.h>
#include <string.h>
#include <time.h>
//#include <winable.h>
#include <windows.h>
#include <windowsx.h>
#include <wininet.h>
#include <winreg.h>
#include <winsock2.h>
#include <winuser.h>
#pragma comment(lib, "Advapi32"
#pragma comment(lib, "Kernel32"
#pragma comment(lib, "Ws2_32"
#pragma comment(lib, "Wininet"
#ifndef EROARE
#define EROARE (-1)
#endif
#ifndef FALS
#define FALS 0
#endif
#ifndef ADEVARAT
#define ADEVARAT 1
#endif
using namespace std;
void ajutor(char exe[10])
{
/* Functia ajutor..., afiseaza comenzile de utiliazare */
printf("n
---------------------------------------------------------------------n
[UTILIZARE]:nn";
char linie[70];
/* linie va ajunge executabilul + [comanda] [IP... bla bla */
strcpy_s(linie, exe);
strcat_s(linie," [comanda] [IP] [port] [user] [passw] [fisier1] [fisier2]";
printf(linie);
printf("nn
Primul parametru este comanda ftp, ele sunt:n
g -descarca fisier (GET).n
p -incarca fisier (PUT).nn
Fsierele sunt:n
fisier1 -Fisier local.n
fisier2 -Fisier pe server.n
Copyright 2006-2007 Win32_Win32 Corp.n
---------------------------------------------------------------------n
";
exit(0);
}
/* Functia main, cea principala */
void main(int argc, char *argv[])
{
/* int main(int argc, char *argv[]):
/* argc si argv încuviințează comenzi CommandLine peste program
/* de ex: (prog.exe -a -b)
/* argc este numarul de parametrii cu care se executa programul
/* adica daca nu i se da nici un parametru inseamna ca
/* argc este argc[1], iar daca se va da un parametru va fi
/* argc[2], si asa mai departe.
/* argv este chiar parametrul, unde argv[0], este pathul progra-
/* mului, adica daca se va da printf("%s", argv[0]); va fi
/* afisat ceva de genu: c:directorprog.exe sau prog.exe.
/* argv[1] va fi inițialul parametru dat, daca afisam argv[1]
/* cu printf(); va fi parametrl dat. */
char prm;
/* se vor pune urmatoarele conditii: */
if(argc >8)
{ /* daca parametrii dati sunt mai multi de 7 atunci va executa
/* urmatoarele intstructiuni. */
printf("n>>> PREA MULTI PARAMETRII !!";
ajutor(argv[0]);
}
if(argc < 8) /* aici previne un bug,
daca param sunt < 8 */
{
printf("n<<< PARAMETRII INSUFICIENTI !!";
ajutor(argv[0]);
}
if(argc == 8)
prm = *argv[1]; /* prm va deveni parametrul cu care a fost executat */
/* converteste port din char in int */
int port;
char port1[10];
strcpy_s(port1, argv[3]);
port=atoi(port1);
/* Aici va incepe deschiderea conexiunii Internet */
LPCSTR ***="Conexiune Ftp"; /* un flag */
HINTERNET hSesiune; /* identificatorul pentru InternetOpen (handle) */
HINTERNET hCon; /* identificatorul pentru InternetConnect */
hSesiune = InternetOpenA(***, INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, NULL);
hCon = InternetConnectA(hSesiune, argv[2], port, argv[4], argv[5],
INTERNET_SERVICE_FTP, NULL, NULL);
DWORD dwe = GetLastError(); /* declaratie GetLastError */
/* FtpPutFile si FtpGetFile returneaza 1 daca este ok,
/* si zero daca exista eroare */
/* Aici se alege parametrul cu care a fost executat */
switch(prm)
{ case 'g': /* get, descarca fisiere */
/* cazul in care parametrul g este cerut va incerca sa descarce fisierul de pe server */
if(FtpGetFileA(hCon, argv[7], argv[6], NULL,
NULL, FTP_TRANSFER_TYPE_BINARY, NULL)==1)
printf("Comanda: OK";
/* daca va da eroare */ else printf("Eroare: %d", dwe);
break; /* intrerupe bucla */
case 'p': /* put, incarca fisiere */
if(FtpPutFileA(hCon, argv[6], argv[7],
FTP_TRANSFER_TYPE_BINARY, NULL)==1)
printf("Comanda: OK";
else printf("Eroare: %d", dwe);
break;
/* in caz ca parametrii sunt incorecti se va face
/* apel functiei ajutor(); */
default: ajutor(argv[0]);
}
/* se vor inchide cele doua Handle */
InternetCloseHandle(hSesiune);
InternetCloseHandle(hCon);
exit(0); /* iesire */
}
======= |
|
|