今天起来发现没事做,于是就试着搞搞ftp文件上传下载吧。。下面是艰难的开始,只实现了个ftp服务器连接,估计这个功能我要明天开始做了。真是郁闷。。。我打算采用实用WinInet API的方式来实现这个功能。至于Winsock的方式以后有时间再搞搞吧。
代码:
CInternetSession *m_pInetsession;
CFtpConnection *m_pFtpConnection;
m_pInetsession=new CInternetSession(AfxGetAppName(),1,PRE_CONFIG_INTERNET_ACCESS);
try
{
m_pFtpConnection=m_pInetsession->GetFtpConnection("127.0.0.1",NULL,NULL,38);
MessageBox("连接成功");
}
catch(CInternetException *pEx)
{
TCHAR szError[1024];
if(pEx->GetErrorMessage(szError,1024))
AfxMessageBox(szError);
else
AfxMessageBox("There was an exception");
pEx->Delete();
m_pFtpConnection=NULL;
return;
}
代码就是这么简单,但是因为是从0开始接触,至于ftp服务器啊什么的全不懂,所以花了我将近2个小时的时间才把这个程序正确运行成功。主要是卡在ftp服务器上了。。下面我主要解释一下ftp服务器相关的设置。
ftp服务器设置
就是在这个问题上纠结了很长的时间。这里我们通过IIS来创建ftp站点。
首先要安装IIS:
同时要选中Internet信息服务--FTP服务器。。像这样:
然后在管理工具中可以看到Internet信息服务(IIS)管理器,双击,(或是通过计算机--管理打开 也是一样的)。
最后通过IIS来创建FTP站点。。本来这是个非常简单的问题,但是我也纠结了半天,智商啊。。。。
添加FTP站点---然后是一系列的设置。这些设置就不多说了,很简单吧。。让我们先来测试一下是否能访问到这个FTP站点吧。
在地址栏输入:ftp:127.0.0.1:38(如果你设置了自己的端口号38,而不是默认的21,就需要加上这个端口号在后面),真是不给面子,TMD要我输入身份认证,我很是无语,于是在IIS管理器中各种找啊,哪里可以设置这种认证的,看到用户名和密码,我就看到亲人了,可惜我没有找到,主要是在这里花了很多时间。最后还是向网上的大神们求救了。需要这样设置:
1.FTP身份验证,启用匿名身份验证 2.FTP SSL设置,SSL策略设置为允许SSL连接 3.FTP 授权规则->添加允许规则->所有匿名用户->读取、写入这样你就可以看到你的FTP站点的目录了,如:
这样你的ftp服务器啊什么全部都完成了,你也可以访问了,在你的程序中,就会弹出你很想看到的“连接成功”了。。