星期一

C語言實現ftp上傳

實現FTP上傳,在一些情況下很簡單,比如c#,或者vc6.0++中幾句代碼就可以,可能很多人都是這樣實現的,c語言的話就很少了。 
使用c語言可以在客戶端,不用安裝很大的運行庫。 當然純粹的c語言來寫,沒有任何的代碼讓你用,一切都要重頭開始
,我看到很多人在找這個代碼,ftp本身協議很簡單
發送USER PASS進行登陸
這時可以設置傳輸模式TYPE a 是ascii模式TYPE I是二進制的,比如我們傳圖片或其他二進製文件都是後者
比如我們要上傳一個文件
先用stor進行設置上傳文件名,這時要注意,這裡是寫此類程序唯一的一個難點,很多人很搞混了,在具體傳輸數據的時候,不能再使用原來的21端口了,需要另外再建一個socket.而服務器具體接受數據的時候也為你設定一個端口。 你只能在這個端口數據上傳輸,重點就是我們怎麼知道服務器為我們設置的用來響應我們傳輸數據端口
ftp有兩種控制模式PASV或port模式
就拿PASV模式來說,我們傳輸前先pasv \r\n
這時服務器會傳過來一段數據
Entering Passtive Mode (23,122,234,21,23,12)
前面四個就是服務器地址,而後兩個數據把第五個乘以256加上第六個參數就是服務器為我們設置的端口
程序如下,具體的設置為你的ftp數據

#include 
#include 
#include 
#define SERVER ""
#define PORT   21
#define USERNAME ""
#define PASSWORD ""
#define MAXLEN 526
#pragma comment(lib,"ws2_32.lib")
SOCKET sctrl;
SOCKET sender;
char sendbuf[100]={0};

int split(char data[],char p[100][50],int datalen)
{
int idx=0;
int strinx=0;
memset(p[0],0,50);
for(int l=0;l

沒有留言:

張貼留言