VC實現FTP定時上傳檔案的實現

2021-06-16 00:38:29 字數 2233 閱讀 3788

前不久,做了乙個小專案,用vc實現客戶端ftp定時上傳程式,其實是個比較簡單的程式,只是剛開始根本不知道vc還自帶ftp類,傻乎乎的自己寫了soket底層通訊,結果因為基礎知識不是很好,半途進展不下去,太複雜了,請教了高手才知道原來vc裡自帶ftp類,暈!!!下面就和大家共享一下自己的成果!(做的也不是很好,但是現在執行的挺穩定的嘻嘻)

一.需求分析:

主要任務:定時上傳本地機器上的特定目錄下各個局的話務原始資料到伺服器端特定目錄下。並進行記錄操作日誌

1.介面:

僅有:讀配置檔案/退出即可。

2.定時器:(主要部分)

每天3:00到3:30某個時間定時上傳檔案。

a.上傳時段:

03:00 - 03:30

b 上傳規則:   例:局名:東方

上傳至資料介面機 /u/gdpwg/szdh/data/下

客戶機上傳檔名規則:d:/timsdata/210/traffic/20060418.rpt

伺服器接收檔名規則:/timsdata/210/traffic/tr20060418.rpt

讀取當天時間20060419則上傳前一天的資料也就是20060418.rpt—〉tr20060418.rpt

定時器每隔10分鐘檢測一次,是否到了3:00或3:30。可以判斷最後一位是否為0在判斷,倒數第二位是否是0或3或者其他演算法均可。總之如果到了3:00就開始上傳檔案。

3.上傳檔案:

根據配置檔案中組合的位址,上傳所有局的話務資料。

4.日誌:

對上傳成功失敗記錄日誌;對程式啟動時間記錄日誌。並形成文字檔案在該程式所在目錄下

二.具體實現:

1.配置檔案:配置檔案根據需求設定如下:

[path]

max_row = 9

path = d:/tims/timsdata/

subpath=/traffic/

[office]

officename1=111

officename2=222

officename3=333

officename4=444

[server]

ip=111.111.1.1

port=21

username=***

pwd=***

path1=/******

path2=/******

officename1=szdh

officename2=szgr

officename3=tdir

officename4=tder

subpath=/spcdata

[startup]

time=15:36

[firstcreate]

flag=0

2.定時功能由vc中的settimer()和ontimer()來實現:

void cftpclientview::oninitialupdate()

void cftpclientview::ontimer(uint nidevent) }}

else

btimer = true;

}3.鏈結伺服器:

bool cdatatxt::connection()

catch(cinternetexception *pex)

writelogfile("ftp登入成功成功");//寫日誌

return true;

}bool cdatatxt::logoffserver()

delete pinetsession;

writelogfile("斷開與伺服器的連線");

return true;

}void cdatatxt::writelogfile(cstring log)

}3.上傳檔案:

非常簡單用乙個函式就解決了:

pftpconnection->putfile(localfile,remotefile)//其中localfile是從配置檔案中讀取的本地檔案所在目錄檔名,remotefile是伺服器端要建立的目錄以及檔名.

//判斷檔案是否存在:

cfilefind finder;

if( !finder.findfile(localfile) )

else

return true;

//在伺服器端建立檔案所用函式:

pftpconnection->createdirectory(s);//s為目錄名,需要注意的是檔案已經建立時,再建立就會返回false

C 實現FTP上傳檔案

文末有獲取完整原始碼的路徑鏈結,在我的上傳資源裡也有完整 各位可不聽我巴拉巴拉,直接獲取 調優,嘿嘿。除錯過程中有問題,再看著我的博文,望能幫助到您。也願幫助到以後的我自己,那樣的話,我會很開心感激現在的自己。ftp位址 string ftpsvrip 10.192.xx ftp埠 int port...

Windows系統定時上傳檔案至FTP

基本操作 1.cmd下,輸入ftp host或者先輸入ftp,然後輸入open host,其中host為要連線的計算機名 ip位址或ftp伺服器的ipv6位址。2.根據提示輸入登入的使用者名稱密碼。3.cd path,利用cd命令進入到某個路徑下 4.put source file1 將本地sour...

python實現FTP迴圈上傳檔案

測試過程中,有時會用到ftp的資料流,或者需要使用ftp反覆上傳檔案,所以寫了乙個ftp迴圈上傳檔案的python 如下 coding utf 8 import sys import os from ftplib import ftp from time import sleep xfer file...