社区
网络编程
帖子详情
大家帮忙看这个函数怎么做?FTP的
xiangxiang626
2005-01-17 12:16:47
int DownOrUpLoad(char* destip, CString SourceName, CString DestName)
FTP上传下载文件的函数,destip为IP,不用初始化,只要能实现文件上传下载就行
...全文
75
4
打赏
收藏
大家帮忙看这个函数怎么做?FTP的
int DownOrUpLoad(char* destip, CString SourceName, CString DestName) FTP上传下载文件的函数,destip为IP,不用初始化,只要能实现文件上传下载就行
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
VCSQLVB
2005-01-18
打赏
举报
回复
BOOL CFTPclient::MoveFile(CString remotefile, CString localfile,BOOL pasv,BOOL get)
{
CString lhost,temp,rhost;
UINT localsock,serversock,i,j;
CFile datafile;
//侦听服务器的连接
CSocket sockSrvr;
//数据连接通道
CAsyncSocket datachannel;
//接收、发送字节
int num,numread,numsent;
//缓冲区大小
const int BUFSIZE=4096;
//缓冲区
char cbuf[BUFSIZE];
DWORD lpArgument=0;
// 打开本地文件
if(!datafile.Open(localfile,(get?CFile::modeWrite|CFile::modeCreate:CFile::modeRead)))
{
m_retmsg.LoadString(IDS_FTPMSG4);
return FALSE;
}
//二进制传输模式
if(!FTPcommand("TYPE I"))
return FALSE;
//被动接收
if(pasv)
{
if(!FTPcommand("PASV"))
return FALSE;
//获取服务器IP
if((i=m_retmsg.Find("("))==-1||(j=m_retmsg.Find(")"))==-1)
return FALSE;
temp=m_retmsg.Mid(i+1,(j-i)-1);
i=temp.ReverseFind(',');
serversock=atol(temp.Right(temp.GetLength()-(i+1)));
temp=temp.Left(i);
i=temp.ReverseFind(',');
serversock+=256*atol(temp.Right(temp.GetLength()-(i+1))); // add ms byte to server socket
rhost=temp.Left(i);
while(1)
{
//转换,
if((i=rhost.Find(","))==-1)
break;
rhost.SetAt(i,'.');
}
}
//主动传输模式
else
{
m_retmsg.LoadString(IDS_FTPMSG6);
//获取本地控制连接IP
if(!m_Ctrlsok->GetSockName(lhost,localsock))
return FALSE;
while(1)
{
//转换.
if((i=lhost.Find("."))==-1) break;
lhost.SetAt(i,',');
}
//创建侦听Socket
if((!sockSrvr.Create(0,SOCK_STREAM,NULL))||(!sockSrvr.Listen()))
return FALSE;
if(!sockSrvr.GetSockName(temp,localsock))
return FALSE;
lhost.Format(lhost+",%d,%d",localsock/256,localsock%256);
//发送Port命令
if(!FTPcommand("PORT "+lhost)) return FALSE;
}
if(!WriteStr((get?"RETR ":"STOR ")+remotefile)) return FALSE;
if(pasv)
{
if(!datachannel.Create()) {
m_retmsg.LoadString(IDS_FTPMSG6);
return FALSE;
}
//数据通道连接
datachannel.Connect(rhost,serversock);
}
//获取响应
if(!ReadStr()||m_fc!=1)
return FALSE;
//通道建立
if(!pasv&&!sockSrvr.Accept(datachannel))
return FALSE;
if((!datachannel.AsyncSelect(0))||(!datachannel.IOCtl(FIONBIO,&lpArgument)))
{
m_retmsg.LoadString(IDS_FTPMSG6);
return FALSE;
}
//开始数据传输
while(1)
{
TRY
{
//获取数据
if(get)
{
//传输完毕
if(!(num=datachannel.Receive(cbuf,BUFSIZE,0))||num==SOCKET_ERROR)
break;
else
datafile.Write(cbuf,num);
}
//上传数据
else
{
//传输完毕
if(!(numread=datafile.Read(cbuf,BUFSIZE)))
break;
if((numsent=datachannel.Send(cbuf,numread,0))==SOCKET_ERROR)
break;
//发送的数据少于实际文件,重新定位文件指针
if(numread!=numsent)
datafile.Seek(numsent-numread,CFile::current);
}
}
CATCH (CException,e) {
m_retmsg.LoadString(IDS_FTPMSG5);
return FALSE;
}
END_CATCH
}
//数据通道关闭
datachannel.Close();
datafile.Close();
//获取响应
if(!FTPcommand(""))
return FALSE;
return TRUE;
}
danielzhu
2005-01-18
打赏
举报
回复
GZ
kingzai
2005-01-17
打赏
举报
回复
uses the MFC class CFtpConnection and CInternetSession to achieve the file transfer
http://www.codeguru.com/Cpp/I-N/internet/ftp/article.php/c6199/
Caps77
2005-01-17
打赏
举报
回复
就一个函数?那可复杂了,要包括ftp的登陆,下载(上传),退出。
http://blog.csdn.net/caps77/
淘客帝国v5.12完美破解版
希望大家
帮忙
多测试下。 V5.0 更新内容: 1、增加两套模板,分别为综合网店型模板和搜索引擎型模板。 2、后台修改设置结构,增加配置中心,可以管理配置文件。 3、增加查询商城商品设置。 4、增加查询店铺 5、搜索...
精易官方免费模块v3.60版
感谢 90后辉煌 提供参考代码,让我们期待已久的超时功能回归,也请大家
帮忙
测试 【网页_访问_EX 为测试版本,完善后,将会删除该命令,功能会添加到 网页_访问()】 2.增加 线程池类1“取状态” 感谢 我叫林舒书 ...
精易模块[源码] V5.15
6、修正“文本_取中间_批量”当参数限定长度不要时,不能继续向下执行的BUG,感谢易友【半个灵魂づ留着】代码。 7、删除“文本_取中间_批量1”命令。 8、修复“注册表操作Ex->写入键值Ex”创建项,重启丢失的BUG,...
怎么拦截系统
函数
主 题: 怎么拦截系统
函数
?(超高度难题!) 在Dos下,我们可以拦截中断,用自己的处理...比如说系统有一个GetSystemDirectory()
函数
,我想用我自己的
函数
替换它,经过我的
函数
MyGetSystemDirectory()进行处理,然
linux
ftp
连接超时(10060),
FTP
数据连接连接远程服务器时超时,该如何处理
该如何处理
FTP
数据连接连接远程服务器时超时,该如何处理www.myexceptions.net网友分享于:2015-08-26浏览:227次
FTP
数据连接连接远程服务器时超时我碰到的问题是这样的:我用SOCKET来
做
一个
FTP
上传/下载.控制连接和...
网络编程
18,356
社区成员
64,214
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章