當前位置:首頁 » 文件傳輸 » cftp控制項
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

cftp控制項

發布時間: 2022-09-09 03:37:05

『壹』 c# 如何讀取ftp上的text文件

使用Inet控制項進行FTP操作
Inet1.Protocol = icFTP
Inet1.RemoteHost = p_ServerName ' 伺服器IP或者域名
Inet1.RemotePort = CInt(p_ServerPort) 'FTP埠
Inet1.UserName = uName 'FTP帳號
Inet1.Password = uPWS 'FTP密碼

Inet1.Execute "", "ls"
ri = Inet1.StillExecuting
Do While ri
ri = Inet1.StillExecuting
DoEvents
Loop
vd = Inet1.GetChunk(1024, icString)
判斷服務的FTP是否連接成功
下面下載伺服器上的text數據,假設文件名為1.txt
p_pathDir 為當前軟體運行目錄,後面一個字元自帶 \,如e:\1111\
tepFile 臨時文件
工作方式是先下載這個文件下為,然後判斷本地是否存在,如果存在,則打開文件讀取內容,如果不存在,則說明伺服器上不存在這個文件,但要注意,如果文件過大的話,可能需要等待的時候比較長。
tepFile = p_pathDir & "1.txt_"
'Inet1.Execute hDir, "get 1.txt " & tepFile
Inet1.Execute "", "GET 1.txt " & tepFile
ri = Inet1.StillExecuting
Do While ri
ri = Inet1.StillExecuting
DoEvents
Loop
If Dir(tepFile) = "" Then
Inet1.Cancel
MsgBox "文件不存在" & InetState, vbOKOnly + vbExclamation, "系統提示"
Else
Inet1.Cancel
'這里已經存在,與本地操作文件一樣,請打開獲取內容,不再詳細寫出
'
End If

『貳』 我用CFtpConnection類的成員函數在ftp伺服器上創建一個文件夾,可怎麼把文件上傳到這個創建的文件夾呢

和本地文件讀寫類似的

先以讀方式打開本地文件,再以寫方式打開FTP遠程文件,然後讀取本地文件至遠程文件。

關鍵代碼:

bOpen=m_CFile.Open(m_str_LocalFileName,CFile::modeRead);
m_pRemoteFile=m_pConnect->OpenFile(m_str_remoteFileName,GENERIC_WRITE);
while((dwRead=m_CFile.Read(pBuf,m_FileLenStep))>0)
{
m_pRemoteFile->Write(pBuf,dwRead);

m_CurUploadSize+=dwRead;
}

『叄』 用C語言寫一個FTP的客戶端程序,需要了解哪些知識

一、需要的知識點:
1、SOCKET技術,網路編程的基本功能
2、FTP
3、如果需要自己寫,可能需要熟悉各個網路框架
二、編寫FTP所需要掌握的框架
1、wininet
2、libcurl

『肆』 Linux/unix環境下C調用FTP如何進行

可以使用管道,下面是我的程序,你可以參考:

#include <stdio.h>
main(int argc, char *argv[]){
FILE *fp;
char str[255];
if (argc!=5){
printf("%s\n%s\n",
"Usage:",
" auto_ftp <ip> <user> <pass> <filename>");
exit();
}
if ((fp=popen("ftp -n","w"))==NULL) {
puts("Run ftp fail !");
exit();
}
//while ((fgets(str,255,fp))!=NULL) puts(str);
fprintf(fp,"open %s\n",argv[1]);
fprintf(fp,"user %s %s\n",argv[2],argv[3]);
fprintf(fp,"prompt\n");
fprintf(fp,"mget *%s\n",argv[4]);
fprintf(fp,"bye\n");
pclose(fp);
}

以上程序編譯為auto_ftp,能夠自動從命令行指定的IP、用戶、密碼下載指定的文件。

補充:
上載、下載都是一樣的,都是通過管道調用ftp工具,C程序只需要發送命令即可,這些命令可以是任何命令,我程序中是GET,你也可以寫PUT。

『伍』 c#中上傳文件至FTP指定目錄方法

#include"stdio.h"
#include"stdlib.h"
#include"string.h"

structPCB{
charNAME[10];/*進程名*/
intROUND;/*進程輪轉時間片*/
intREACHTIME;/*進程到達時間*/
intCPUTIME;/*進程佔用CPU時間*/
intCOUNT;/*計數器*/
intNEEDTIME;/*進程完成還要的CPU時間*/
charSTATE;/*進程的狀態*/
structPCB*NEXT;/*鏈指針*/
};

structLINK{/*PCB的鏈結構*/
structPCB*RUN;/*當前運行進程指針*/
structPCB*READY;/*就緒隊列頭指針*/
structPCB*TAIL;/*就緒隊列尾指針*/
structPCB*FINISH;/*完成隊列頭指針*/
};

voidINIT(LINK*);/*對PCB的鏈結構初始化*/
voidINSERT(LINK*);/*將執行了一個單位時間片數且還未完成的進程的PCB插到就緒隊列的隊尾*/
voidFIRSTIN(LINK*);/*將就緒隊列中的第一個進程投入運行*/
voidPRINT(LINK*);/*列印每執行一個時間片後的所有進程的狀態*/
voidPR(PCB*);/*列印一個進程的狀態*/
intCREATE(LINK*,int);/*創建新的進程*/
voidROUNDSCH(LINK*);/*按時間片輪轉法調度進程*/

voidmain(){
LINKpcbs;
inti;
INIT(&pcbs);
i=0;
printf("創建5個進程 ");
while(i<5){
if(CREATE(&pcbs,i+1)==1){
printf("進程已創建 ");
i++;
}
else
printf("進程創建失敗 ");
}
FIRSTIN(&pcbs);
ROUNDSCH(&pcbs);
}

voidROUNDSCH(LINK*p){
PCB*pcb;
while(p->RUN!=NULL){
pcb=(PCB*)malloc(sizeof(PCB));
strcpy(pcb->NAME,p->RUN->NAME);
pcb->ROUND=p->RUN->ROUND;
pcb->REACHTIME=p->RUN->REACHTIME;
pcb->CPUTIME=p->RUN->CPUTIME;
pcb->COUNT=p->RUN->COUNT;
pcb->NEEDTIME=p->RUN->NEEDTIME;
pcb->STATE=p->RUN->STATE;
pcb->NEXT=p->RUN->NEXT;
pcb->CPUTIME++;
pcb->NEEDTIME--;
pcb->COUNT++;
if(pcb->NEEDTIME==0){
pcb->NEXT=p->FINISH->NEXT;
p->FINISH->NEXT=pcb;
pcb->STATE='F';
p->RUN=NULL;
if(p->READY!=p->TAIL)
FIRSTIN(p);
}
else{
p->RUN=pcb;
if(pcb->COUNT==pcb->ROUND){
pcb->COUNT=0;
if(p->READY!=p->TAIL){
pcb->STATE='W';
INSERT(p);
FIRSTIN(p);
}
}
}
PRINT(p);
}
}

voidINIT(LINK*p){
p->RUN=NULL;
p->TAIL=p->READY=(PCB*)malloc(sizeof(PCB));
p->READY->NEXT=NULL;
p->FINISH=(PCB*)malloc(sizeof(PCB));
p->FINISH->NEXT=NULL;
}

intCREATE(LINK*p,intn){
PCB*pcb,*q;
pcb=(PCB*)malloc(sizeof(PCB));
flushall();
printf("請輸入第%d個進程的名稱: ",n);
gets(pcb->NAME);
printf("請輸入第%d個進程的輪轉時間片數: ",n);
scanf("%d",&(pcb->ROUND));
printf("請輸入第%d個進程的到達時間: ",n);
scanf("%d",&(pcb->REACHTIME));
pcb->CPUTIME=0;
pcb->COUNT=0;
printf("請輸入第%d個進程需運行的時間片數: ",n);
scanf("%d",&(pcb->NEEDTIME));
pcb->STATE='W';
pcb->NEXT=NULL;
if(strcmp(pcb->NAME,"")==0||pcb->ROUND<=0||pcb->NEEDTIME<=0)/*輸入錯誤*/
return0;
q=p->READY;
while(q->NEXT!=NULL&&q->NEXT->REACHTIME<=pcb->REACHTIME)
q=q->NEXT;
pcb->NEXT=q->NEXT;
q->NEXT=pcb;
if(pcb->NEXT==NULL)
p->TAIL=pcb;
return1;
}

voidFIRSTIN(LINK*p){
PCB*q;
q=p->READY->NEXT;
p->READY->NEXT=q->NEXT;
q->NEXT=NULL;
if(p->READY->NEXT==NULL)
p->TAIL=p->READY;
q->STATE='R';
p->RUN=q;
}

voidINSERT(LINK*p){
PCB*pcb;
pcb=(PCB*)malloc(sizeof(PCB));
strcpy(pcb->NAME,p->RUN->NAME);
pcb->ROUND=p->RUN->ROUND;
pcb->REACHTIME=p->RUN->REACHTIME;
pcb->CPUTIME=p->RUN->CPUTIME;
pcb->COUNT=p->RUN->COUNT;
pcb->NEEDTIME=p->RUN->NEEDTIME;
pcb->STATE=p->RUN->STATE;
pcb->NEXT=p->RUN->NEXT;
p->TAIL->NEXT=pcb;
p->TAIL=pcb;
p->RUN=NULL;
pcb->STATE='W';
}

voidPRINT(LINK*p){
PCB*pcb;
printf("執行一個時間片後的所有進程的狀態: ");
if(p->RUN!=NULL)
PR(p->RUN);
if(p->READY!=p->TAIL){
pcb=p->READY->NEXT;
while(pcb!=NULL){
PR(pcb);
pcb=pcb->NEXT;
}
}
pcb=p->FINISH->NEXT;
while(pcb!=NULL){
PR(pcb);
pcb=pcb->NEXT;
}
}

voidPR(PCB*p){
printf("進程名:%s ",p->NAME);
printf("進程輪轉時間片:%d ",p->ROUND);
printf("進程到達時間:%d ",p->REACHTIME);
printf("進程佔用CPU時間:%d ",p->CPUTIME);
printf("計數器:%d ",p->COUNT);
printf("進程完成還要的CPU時間:%d ",p->NEEDTIME);
printf("進程的狀態:%c ",p->STATE);
}

『陸』 c# 如何從ftp上復制/除去ftp上的某個文件

用FTPRush登陸FTP,選中文件右擊刪除

『柒』 C語言如何連接FTP,連接成功後遍歷FTP下目錄,包括子目錄,要源代碼,而且是成功案例,自以為是的靠邊站!

用libcurl實現,具體代碼看
http://curl.haxx.se/libcurl/c/ftpget.html

『捌』 使用CFtpConnection類,總是有內存泄露,是咋回事

為了與FTPInternet伺服器通訊,必須先創建一個CInternetSession實例,然後創建CFtpConnection對象。創建CFtpConnection對象不採用直接方式,而是調用CInternetSession::GetFtpConnertion來創建並返回一個指向它的指針。CFtpConnection類的成員構造函數CFtpConnection構造一個CFtpConnection對象操作SetCurrentDirectory設置當前FTP目錄GetCurrentDirectory獲取此次連接的當前目錄GetCurrentDirectoryAsURL獲取作為URL的此次連接的當前目錄RemoveDirectory從伺服器移去指定目錄CreateDirectory在伺服器上構造一個目錄Rename將伺服器上的文件改名Remove從伺服器上移去一個文件PutFile將一個文件放到伺服器上GetFile從連接的伺服器上獲取一個文件OpenFile在連接的伺服器上打開一個文件Close關閉與伺服器的連接實例一:上傳文件CStringstrAppName=AfxGetAppName();CInternetSession*pSession=newCInternetSession(strAppName);CFtpConnection*pConn=pSession->GetFtpConnection("10.46.1.232","Anonymous","",21);pConn->SetCurrentDirectory("test");CStringstrLocfile,strRemotefile;strLocfile="C:\\cmd.txt";strRemotefile="cmd.txt";pConn->PutFile(strLocfile,strRemotefile,FTP_TRANSFER_TYPE_ASCII);pConn->Close();return0;實例二:Ftp的打開文件操作函數:OpenFile

『玖』 C語言實現從FTP下載、上傳文件

FTP 是File Transfer Protocol(文件傳輸協議)的英文簡稱,而中文簡稱為「文傳協議」。
1.C語言可以使用CStdioFile函數打開本地文件。使用類CInternetSession 創建並初始化一個Internet打開FTP伺服器文件。
CStdioFile繼承自CFile,一個CStdioFile 對象代表一個用運行時函數fopen 打開的C 運行時流式文件。
流式文件是被緩沖的,而且可以以文本方式(預設)或二進制方式打開。文本方式提供對硬回車—換行符對的特殊處理。當你將一個換行符(0x0A)寫入一個文本方式的CStdioFile 對象時,位元組對(0x0D,0x0A)被發送給該文件。當你讀一個文件時,位元組對(0x0D,0x0A)被翻譯為一個位元組(0x0A)。
CStdioFile 不支持Duplicate,LockRange,和UnlockRange 這幾個CFile 函數。如果在CStdioFile 中調用了這幾個函數,將會出現CNoSupported 異常。
使用類CInternetSession 創建並初始化一個或多個同時的Internet 會話。如果需要,還可描述與代理伺服器的連接。
如果Internet連接必須在應用過程中保持著,可創建一個類CWinApp的CInternetSession成員。一旦已建立起Internet 會話,就可調用OpenURL。CInternetSession會通過調用全局函數AfxParseURL來為分析映射URL。無論協議類型如何,CInternetSession 解釋URL並管理它。它可處理由URL資源「file://」標志的本地文件的請求。如果傳給它的名字是本地文件,OpenURL 將返回一個指向CStdioFile對象的指針。
如果使用OpenURL在Internet伺服器上打開一個URL,你可從此處讀取信息。如果要執行定位在伺服器上的指定的服務(例如,HTTP,FTP或Gopher)行為,必須與此伺服器建立適當的連接。

『拾』 C語言如何用FtpPutFile()函數上傳文件到Ftp伺服器!下載用FtpGetFile()可以!

  1. 先後使用InternetOpen和InternetConnect打開連接。
  2. 使用CreateFile函數打開本地文件。
  3. 使用FtpOpenFile函數打開遠程文件。
  4. 分別使用InternetReadFile和ReadFile函數讀取 FTP 或本地文件。
  5. 分別使用InternetWriteFile和WriteFile函數寫入 FTP 或本地文件。
  6. 使用CloseHandle函數關閉本地文件句柄。
  7. 使用InternetCloseHandle函數關閉 FTP 文件句柄。