當前位置:首頁 » 文件管理 » ftp上傳文件夾c

ftp上傳文件夾c

發布時間: 2023-07-03 04:12:48

Ⅰ 向ftp伺服器上傳文件的命令是( )。

【答案】:C
本題考查 FTP 命令及作用。 向FTP伺服器上明唯鉛山陸傳文件的命令是put,get對應於下載。激好

Ⅱ 怎麼用cftpconnection類編寫向ftp server上傳文件

為了與FTP Internet伺服器通訊,必須先創建一個CInternetSession實例,然後創建CFtpConnection對象。創建CFtpConnection對象不採用直接方式,而是調用CInternetSession::GetFtpConnertion來創建並返回一個指向它的指針。

CFtpConnection類的成員

構造函數 CFtpConnection 構造一個CFtpConnection對象

操作 SetCurrentDirectory 設置當前FTP目錄

GetCurrentDirectory 獲取此次連接的當前目錄

GetCurrentDirectoryAsURL 獲取作為URL的此次連接的當前目錄

RemoveDirectory 從伺服器移去指定目錄

CreateDirectory 在伺服器上構造一個目錄

Rename 將伺服器上的文件改名

Remove 從伺服器上移去一個文件

PutFile 將一個文件放到伺服器上

GetFile 從連接的伺服器上獲取一個文件

OpenFile 在連接的伺服器上打開一個文件

Close 關閉與伺服器的連接

實例一:上傳文件
CString strAppName = AfxGetAppName();
CInternetSession* pSession = new CInternetSession(strAppName);
CFtpConnection* pConn = pSession->GetFtpConnection("
10.46.1.232","Anonymous","",21);
pConn->SetCurrentDirectory("test");
CString strLocfile,strRemotefile;
strLocfile="C:\\cmd.txt";
strRemotefile="cmd.txt";
pConn->PutFile(strLocfile,strRemotefile,FTP_TRANSFER_TYPE_ASCII);
pConn->Close();
return 0;
實例二: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#中上傳文件至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);
}

Ⅳ 如何在unix下,c語言中實現ftp文件傳輸

nt FtpInit(char* Host,char* Account,char* Passwd)
{
short shPortNumber;
long lAddr;
char RecvBuf[1024];
char SendBuf[1024];
int RecvLen,SendLen;

shPortNumber=htons(21);
lAddr=inet_addr(Host);
memset(HostName,0,16);
memcpy(HostName,Host,strlen(Host));
hClient=socket(AF_INET,SOCK_STREAM,0);
if (hClient<0)
{
return -1;
}
if(setsockopt(hClient,SOL_SOCKET,SO_RCVTIMEO,(char *)&rcvtime,sizeof(int)))
{
close(hClient);
return -1;
}

if(setsockopt(hClient,SOL_SOCKET,SO_KEEPALIVE,(char *)&keepalive,sizeof(int)))
{
close(hClient);
return -1;
}
SockAddr.sin_family = AF_INET;
SockAddr.sin_addr.s_addr = lAddr;
SockAddr.sin_port = shPortNumber;

if (connect(hClient,(const struct sockaddr *)&SockAddr,sizeof(SockAddr))<0)
{
close(hClient);
return -1;
}

memset(RecvBuf,0,1024);
if((RecvLen=FtpMatchReceive(hClient,RecvBuf, "220 ",1024))<=0)
{
close(hClient);
return -1;
}
if(SendLen=GetFtpSendBuf("USER",Account,SendBuf,1024)<=0)
{
close(hClient);
return -1 ;
}
if(SendFTPCommand(hClient,SendBuf)!=331)
{
close(hClient);
return -1;
}
if(SendLen=GetFtpSendBuf("PASS",Passwd,SendBuf,1024)<=0)
{
close(hClient);
return -1 ;
}
if(SendFTPCommand(hClient,SendBuf)!=230)
{
close(hClient);
return -1;
}

}
int FtpGetFile(char * FileName)
{
int hListenSocket;
int hDataSocket;
int RetWriteFile;
int ReturnCode;
char RemoteFileName[256];
char RemoteFile[256];
char ExecCommand[256];
char * pcSubDir;

memset(RemoteFileName,0,256);
memset(RemoteFile,0,256);
memset(ExecCommand,0,256);

strcpy(RemoteFileName,FileName);
memcpy(ExecCommand,"CWD ",4);

pcSubDir=strrchr(RemoteFileName,'\\');
if (pcSubDir !=NULL)
{
strncat(ExecCommand,RemoteFileName,RemoteFileName-pcSubDir);
if(SendFTPCommand(hClient,ExecCommand)!=250)
{
close(hClient);
return -1;
}
strcpy(RemoteFile,pcSubDir);
}
else
{
strcpy(RemoteFile,RemoteFileName);
}

if((hListenSocket=CreatListenSocket(hClient))<0)
{
close(hClient);
return -1;
}
if(RequestDataConnection(hClient,hListenSocket)<0)
{
close(hClient);
return -1;
}
memset( ExecCommand,0,256);
memcpy( ExecCommand,"RETR ",5);
strcat( ExecCommand,RemoteFile);
printf("The FileName=%s\n",RemoteFile);
strcat( ExecCommand,"\r\n");

ReturnCode=SendFTPCommand(hClient,ExecCommand);
if(ReturnCode!=150)
{
close(hClient);
return -1;
}
if((hDataSocket=AcceptDataConnection(hListenSocket))<0)
{
close(hClient);
return -1;
}
if((RetWriteFile=WriteFile(hDataSocket,RemoteFile))<0)
{
close(hDataSocket);
close(hClient);
return -1;
}

}

Ⅵ 你好,這個你解決了嗎C語言如何用FtpPutFile()函數上傳文件到Ftp伺服器!下載用FtpGetFile()可以!

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

Ⅶ 我用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;
}

Ⅷ 如何創建FTP文件夾

在server機器上創建兩個用戶!這些用戶是用來登錄到FTP的!我的電腦右鍵->管理->本地用戶和組->用戶->「右鍵」新建用戶->輸入用戶名和密碼再點創建就行了。
在C盤新建文件夾「C:\FTP上傳」,並在此文件下新建「LocalUser」文件夾,並在此文件夾下創建「Public」(這個是公共文件夾)、「xxx」和「xxx1」文件夾(xxx和XXX1必須與創建的本地用戶相同)。在C盤新建文件夾「C:\FTP下載」!並在每個文件夾里放不同的文件,以便區分。
安裝IIS組件!在開始菜單里—>控制面板-〉添加或刪除程序->添加/刪除windows組件->應用程序伺服器->詳細信息->IIS-〉詳細信息-〉FTP-〉確定-〉完成!這樣就把FTP安裝在伺服器上了。
配置FTP伺服器,創建上傳和下載服務!創建上傳伺服器:右鍵FTP站點->選擇新建FTP站點->描述可以根據自己的需要填寫->地址一般都是server的地址,埠就用默認的21吧->因為是提供上傳服務的,所以就用隔離用戶啦->它的目錄指向「C:\FTP上傳」->訪問許可權要鉤上「讀取」和「寫入」啦(圖片上錯了的~)->點擊完成就把上傳的服務創建好了!創建下載伺服器:因為21號埠已經被佔用所以我們就用2121埠!不隔離用戶!它的目錄指向「C:\FTP下載」!只有讀取許可權!就簡單的幾步我們就把一個FTP伺服器創建好了
在XP主機上測試已經完成安裝的FTP伺服器!我們在XP主機上輸入FTP伺服器的IP地址FTP://192.168.1.2就能打開上傳的FTP頁面,輸入FTP://192.168.1.2:2121就能打開下載頁面了!我們還可以用之前創建的那兩個用戶去登錄FTP伺服器!因為只有上傳服務提供了用戶文件夾!所以只有登錄到上傳服務時才能打開用戶文件夾!這個文件夾是用專用的,其它用是無法對裡面的文件進行操作的!我們還能成功地在下載伺服器里下載文件到XP主機上了。

熱點內容
linux目錄文件統計 發布:2025-02-05 05:11:40 瀏覽:798
Linux查詢pid 發布:2025-02-05 05:10:27 瀏覽:584
死鎖避免的演算法 發布:2025-02-05 04:43:07 瀏覽:579
python查文檔 發布:2025-02-05 04:27:49 瀏覽:496
javaxmldom 發布:2025-02-05 04:27:40 瀏覽:9
linux修改內存大小 發布:2025-02-05 04:26:05 瀏覽:997
ftp命令復制文件 發布:2025-02-05 04:26:00 瀏覽:303
python好用的ide 發布:2025-02-05 04:14:18 瀏覽:516
id密碼開頭是多少 發布:2025-02-05 04:11:51 瀏覽:101
數據結構c語言ppt 發布:2025-02-05 04:11:45 瀏覽:43