您所在位置: 网站首页 / C++实现文件传输.doc / 文档详情
C++实现文件传输.doc 立即下载
2024-09-09
约2万字
约29页
0
74KB
举报 版权申诉
预览加载中,请您耐心等待几秒...

C++实现文件传输.doc

C++实现文件传输.doc

预览

免费试读已结束,剩余 24 页请下载文档后查看

5 金币

下载文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开


/NUMPAGES29

HYPERLINK"://blog.csdn.net/zhengkangchen/article/details/3942235"\o"c++实现文件传输之一:框架结构和界面实现"c++实现文件传输之一:框架结构和界面实现
在木马中文件管理的重要性,是无需质疑的,对于文件的管理,做到并不难,但做好却也不易在我们编写一个功能完整的“文件木马〞其实现效果如下图。为了文章的完整性,我们将分为数篇来介绍,本文主要介绍程序的整体框架和界面实现,在以后的文章中将以此框架为根底实现详细的功能。实现:枚举磁盘,枚举目录,获取文件信息上传文件,下载文件,执行文件,创建目录,删除目录等传输控制结构要实现客户端与服务端的通信,设计一个合理的传输控制结构,会使后面的工作轻松很多,为了使代码易读首先对要使用的命令进展预定义其各个命令定义如下#defineGetDriver0x01//磁盘信息#defineGetDirInfo0x02//目录信息#defineExecFile0x03//执行文件#defineGetFile0x04//下载文件#definePutFile0x05//上传文件#defineDelFile0x06//删除文件#defineDelDir0x07//删除目录#defineCreateDir0x08//创建目录#defineFileInfo0x09//文件信息#defineGetScreen0x10//查看屏幕在程序的网络通信中主要有操作命令,命令对像,和具体数据三局部,对于命令的传输定义如下结构typedefstruct{intID;//操作命令BYTElparam[BUF_LEN*2];//命令对像}COMMAND;因为在程序中打交道最多的就是文件,对文件的详细属性定义如下结构typedefstruct{charFileName[MAX_PATH];//文件名称intFileLen;//文件长度charTime[50];//时间信息BOOLIsDir;//为目录否BOOLError;//错误信息HICONhIcon;//图标句柄}FILEINFO;服务端结构服务端还是比拟简单的其整体思路如下1.服务端循环承受连接,并把连接交给线程处理2.线程承受"命令数据",并跟据命令ID将命令对像和SOCKET句柄传给处理函数3.函数执行指定功能,并返回执行结果对整体结构的描述,我们用伪代码表述如下main(){/*初示化设置......*/while(true){if(client=accept(server,(sockaddr*)&clientaddr,&len))//循环承受连接{CreateThread(NULL,NULL,SLisen,(LPVOID)client,NULL,NULL);//传递线程处理}}/*清理释放资源......*/WSACleanup();}服务端程序运行后循环承受连接,如果有新的连接就传递给新的线程处理,线程代码如下DWORDWINAPISLisen(LPVOIDlparam){SOCKETclient=(SOCKET)lparam;COMMANDcommand;while(1){if(recv(client,(char*)&command,sizeof(command),0)==SOCKET_ERROR)//承受命令数据{cout<<"TheClinetSocketisClosed/n";break;}else{switch(command.ID)//判断命令ID{caseGetDriver://将命令对像和SOCKET句柄传递给处理函数GetDriverProc(command,client);break;caseDelFile:DelFileProc(command,client);break;/*其它命令......*/}}}}线程式的功能是承受客户端的"命令数据",并跟跟据命令ID将命令对像传递给处理函数,由函数完成指定的功能以删除文件命令为例其函数格式如下DWORDDelFileProc(COMMANDcommand,SOCKETclient){if(DeleteFile((char*)command.lparam)==0)//command.lparam为命令对像,这里为要删除的文件路径{send(client,"删除失败...");}else{send(client,"删除成功...");}}很容易看出,处理函数承受"命令对像"和客户端SOCKET句柄,执行后会把结果传递回去....客户端结构客户端结构的实现思路如下1.跟服务端建立连接2.发送用户命令3.启动一个线程,用于承受服务端的返回信息对整体结构的描述,我们用伪代码表述如下voidCMyDlg
查看更多
单篇购买
VIP会员(1亿+VIP文档免费下)

扫码即表示接受《下载须知》

C++实现文件传输

文档大小:74KB

限时特价:扫码查看

• 请登录后再进行扫码购买
• 使用微信/支付宝扫码注册及付费下载,详阅 用户协议 隐私政策
• 如已在其他页面进行付款,请刷新当前页面重试
• 付费购买成功后,此文档可永久免费下载
全场最划算
12个月
199.0
¥360.0
限时特惠
3个月
69.9
¥90.0
新人专享
1个月
19.9
¥30.0
24个月
398.0
¥720.0
6个月会员
139.9
¥180.0

6亿VIP文档任选,共次下载特权。

已优惠

微信/支付宝扫码完成支付,可开具发票

VIP尽享专属权益

VIP文档免费下载

赠送VIP文档免费下载次数

阅读免打扰

去除文档详情页间广告

专属身份标识

尊贵的VIP专属身份标识

高级客服

一对一高级客服服务

多端互通

电脑端/手机端权益通用