資源簡介
C++實(shí)現(xiàn)FTP客戶端,基本功能下載,刪除,上傳,顯示文件列表

代碼片段和文件信息
#include?“FtpClient.h“
#include
#include?
#include
#include
#include
#include
#pragma?warning(disable?:?4996)?//忽視sprintf警告
using?namespace?std;
FtpClient::FtpClient()
{
WORD?wVersionRequested;
WSADATA?wsaData;?//這個(gè)結(jié)構(gòu)被用來存儲(chǔ)被WSAStartup函數(shù)調(diào)用后返回的Windows?Sockets數(shù)據(jù)
int?ret;
//WinSock初始化:?
wVersionRequested?=?MAKEWORD(2?2);//希望使用的WinSock?DLL的版本?
???/*WORD?MAKEWORD(
???BYTE?bLow?//指定新變量的低字節(jié)序;
???BYTE?bHigh?//指定新變量的高字節(jié)序;
???);*/
ret?=?WSAStartup(wVersionRequested?&wsaData);?//第一個(gè)參數(shù)版本號(hào),第二個(gè)指針指向數(shù)據(jù),函數(shù)返回值為int型
if?(ret?!=?0)
{
cout<<“WSAStartup()?failed!“< }
//確認(rèn)WinSock?DLL支持版本2.2:?
if?(LOBYTE(wsaData.wVersion)?!=?2?||?HIBYTE(wsaData.wVersion)?!=?2)
{
WSACleanup();
//終止Winsock?2?DLL?(Ws2_32.dll)?
//的使用,操作成功返回值為0;否則返回值為SOCKET_ERROR,調(diào)用WSAGetLastError獲取錯(cuò)誤代碼。
cout<<“Invalid?Winsock?version!“< }
clientSocket?=?socket(AF_INET?SOCK_STREAM?0);
if?(clientSocket<0)
{
cout?<“創(chuàng)建socket失敗“?< }
else
{
start();
}
}
/************************************************************************/
/*?菜單選項(xiàng)
???輸入1登錄?用戶輸入要來連接主機(jī)連接成功后輸入賬號(hào)密碼
??????2下載??從FTP服務(wù)器下載文件到本地
??3上傳??本地上傳文件到服務(wù)器
??4查看??查看服務(wù)器當(dāng)前目錄所有文件
??5刪除??刪除服務(wù)器文件
??6退出??斷開連接
*/
/************************************************************************/
void?FtpClient::start()
{
int?a;
while?(1)
{
cout?<“***************小辛的FTP客戶端***************“?< cout?<“1.登錄“?< cout?<“2.下載“?< cout?<“3.上傳“?< cout?<“4.查看“?< cout?<“5.刪除“?< cout?<“6.退出“?< cout?<“*********************************************“?< cin?>>?a;
switch?(a)
{
case?1:
LogIn();
break;
case?2:
DownLoad();
break;
case?3:
UpLoad();
break;
case?4:
List();
break;
case?5:
Delete();
break;
case?6:
Exit();
break;
default:
break;
}
}
}
//析構(gòu)函數(shù)注銷socket
FtpClient::~FtpClient()
{
closesocket(clientSocket);
}
//登陸功能
bool?FtpClient::LogIn()
{
memset(&serverChannel?0?sizeof(serverChannel));//清空serverChannel
cout?<“請(qǐng)輸入要連接的IP地址“?< char?IP[20];
cin?>>?IP;
serverChannel.sin_family?=?AF_INET;//IPV4協(xié)議
serverChannel.sin_addr.S_un.S_addr?=?inet_addr(IP);//主機(jī)
serverChannel.sin_port?=?htons(SERVERPORT);//端口號(hào)
//創(chuàng)建連接
serverSocket?=?connect(clientSocket?(sockaddr*)&serverChannel?sizeof(serverChannel));
if?(serverSocket?0)?{
cout?<“連接失?。?!“?< cout?< return?false;
}
else?{
//連接成功返回服務(wù)器回饋信息
cout?<“連接成功!“?< memset(BUFFER?0?sizeof(BUFFER));
recv(clientSocket?BUFFER?sizeof(BUFFER)?0);
cout?< }
CHAR?name[20];//用戶名
CHAR?password[20];//密碼
CHAR?temp[50];//臨時(shí)變量存要發(fā)送的命令
string?StrBuffer;//臨時(shí)變量存服務(wù)器返回信息
cout?<“請(qǐng)輸入用戶名:“;
cin?>>?na
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
????..A..H.?????30720??2017-09-29?01:33??FtpClient\.vs\FtpClient\v14\.suo
?????文件?????141824??2017-09-29?00:50??FtpClient\Debug\FtpClient.exe
?????文件????1167404??2017-09-29?00:50??FtpClient\Debug\FtpClient.ilk
?????文件????1871872??2017-09-29?00:50??FtpClient\Debug\FtpClient.pdb
?????文件??????????2??2017-09-28?23:02??FtpClient\FtpClient\asd
?????文件????????213??2017-09-28?22:33??FtpClient\FtpClient\C
?????文件????????248??2017-09-29?00:50??FtpClient\FtpClient\Debug\FtpClient.log
?????文件?????432330??2017-09-29?00:50??FtpClient\FtpClient\Debug\FtpClient.obj
?????文件?????328442??2017-09-28?21:27??FtpClient\FtpClient\Debug\ftpclient.obj.enc
?????文件???????1250??2017-09-29?00:50??FtpClient\FtpClient\Debug\FtpClient.tlog\CL.command.1.tlog
?????文件??????67352??2017-09-29?00:50??FtpClient\FtpClient\Debug\FtpClient.tlog\CL.read.1.tlog
?????文件???????1302??2017-09-29?00:50??FtpClient\FtpClient\Debug\FtpClient.tlog\CL.write.1.tlog
?????文件????????189??2017-09-29?00:50??FtpClient\FtpClient\Debug\FtpClient.tlog\FtpClient.lastbuildstate
?????文件???????1214??2017-09-29?00:50??FtpClient\FtpClient\Debug\FtpClient.tlog\li
?????文件???????3190??2017-09-29?00:50??FtpClient\FtpClient\Debug\FtpClient.tlog\li
?????文件????????478??2017-09-29?00:50??FtpClient\FtpClient\Debug\FtpClient.tlog\li
?????文件??????48777??2017-09-29?00:50??FtpClient\FtpClient\Debug\FTPdemp.obj
?????文件????1043456??2017-09-29?00:50??FtpClient\FtpClient\Debug\vc140.idb
?????文件?????536576??2017-09-29?00:50??FtpClient\FtpClient\Debug\vc140.pdb
?????文件??????12266??2017-09-29?01:33??FtpClient\FtpClient\FtpClient.cpp
?????文件????????619??2017-09-29?00:50??FtpClient\FtpClient\FtpClient.h
?????文件???????7497??2017-09-27?14:03??FtpClient\FtpClient\FtpClient.vcxproj
?????文件???????1180??2017-09-27?14:03??FtpClient\FtpClient\FtpClient.vcxproj.filters
?????文件????????129??2017-09-27?14:33??FtpClient\FtpClient\FTPdemp.cpp
?????文件???????1309??2017-09-27?11:27??FtpClient\FtpClient.sln
?????文件???29581312??2017-09-29?01:33??FtpClient\FtpClient.VC.db
?????目錄??????????0??2017-09-27?11:27??FtpClient\.vs\FtpClient\v14
?????目錄??????????0??2017-09-29?00:50??FtpClient\FtpClient\Debug\FtpClient.tlog
?????目錄??????????0??2017-09-27?11:27??FtpClient\.vs\FtpClient
?????目錄??????????0??2017-09-29?00:50??FtpClient\FtpClient\Debug
............此處省略7個(gè)文件信息
評(píng)論
共有 條評(píng)論