❶ 你好,這個你解決了嗎C語言如何用FtpPutFile()函數上傳文件到Ftp伺服器!下載用FtpGetFile()可以!
先後使用InternetOpen和InternetConnect打開連接。使用CreateFile函數打開本地文件。使用FtpOpenFile函數打開遠程文件。分別使用InternetReadFile和ReadFile函數讀取
FTP
或本地文件。分別使用InternetWriteFile和WriteFile函數寫入
FTP
或本地文件。使用CloseHandle函數關閉本地文件句柄。使用InternetCloseHandle函數關閉
FTP
文件句柄。
❷ 在linux中如何用C語言實現FTP上傳
你可以使用庫函數啊, 比如libftp或者libcurl(記得支持的)。 具體的用法你可以查閱相關的說明文檔。比你自己寫一個客戶端簡單多了。
❸ 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語言如何用FtpPutFile()函數上傳文件到Ftp伺服器!下載用FtpGetFile()可以!
- 先後使用InternetOpen和InternetConnect打開連接。
- 使用CreateFile函數打開本地文件。
- 使用FtpOpenFile函數打開遠程文件。
- 分別使用InternetReadFile和ReadFile函數讀取 FTP 或本地文件。
- 分別使用InternetWriteFile和WriteFile函數寫入 FTP 或本地文件。
- 使用CloseHandle函數關閉本地文件句柄。
- 使用InternetCloseHandle函數關閉 FTP 文件句柄。
❺ 想用C++實現FTP功能:選定自己電腦上的txt文件,發送到用網線連接的另一台電腦上。很急,求大神支招
可以參考下面代碼
CInternetSessionsession("MyFtpsession");
CFtpConnection*pconn;
pconn=NULL;
inttrycount=0;
CString搭搭UpFile;
UpFile="c:\a.rar";
CStringFtpIP,FtpUserName,FtpPassword,FtpDir;
FtpIP="192.168.1.100";
FtpUserName="userup";
FtpPassword="uppass";
FtpDir="/";
unsignedshortport;
port=21;
reconn:
try
{
pconn=session.GetFtpConnection(FtpIP,
FtpUserName,FtpPassword,port,FALSE);//INTERNET_INVALID_PORT_NUMBER,FALSE);
}
catch(CInternetException*pException)
{
trycount++;
if(trycount==2)
{
pException->ReportError();
returnFALSE;
}
else
{
//srand((unsigned)time(0));//設種子
//Delay((long)rand()*10000);
goto知轎拿reconn;
}
}
if(!pconn->SetCurrentDirectory(FtpDir))
{
TRACE("SetDirError");
returnFALSE;
}
if(!(pconn->PutFile(UpFile,FTP_TRANSFER_TYPE_BINARY,1)))
{
return帆瞎FALSE;
TRACE("PutError");
}
session.Close();
deletepconn;
deletesession;
pconn=NULL;