FTP是File Transfer Protocol的英文简称,中文是文件传输协议。
我们可以通过一个支持FTP协议的客户端程序,连接到远程主机上的FTP服务器,上传或者下载文件。
TCO/IP协议中,FTP标准命令TCP端口号为21,Port方式数据端口为20。
FTP的任务是从一台计算机将文件传送到另一台计算机上,并不受操作系统的限制。
首先我们来进行一下Win7下的FTP服务的配置。
我们先新建访问FTP的用户。右键点击计算机,点击管理,进入本地用户和组中,新建用户。
勾选上Internet信息服务中的全部。
控制面板-->管理工具
双击打开Internet信息服务(IIS)管理器。
在Internet信息服务(IIS)管理器中左边的网站上右键,点击“添加FTP站点”。
在绑定和SSL设置中,添加FTP服务器的IP地址。勾选自动启动FTP站点。SSL选“无”。点击下一步。
在身份验证和授权信息中,身份验证勾选基本。点击完成。
按Win + R 打开运行,输入services.msc打开服务窗口,找到Microsoft FTP Service,启动服务。
回到Internet信息服务(IIS)管理器中,右键点击新建的FTP站点,启动FTP。
Internet信息服务(IIS)管理器-->FTP授权规则-->编辑权限-->安全-->编辑-->添加。在选择用户或组中输入用户名,然后点击确认。在权限窗口中勾选完全控制。
Internet信息服务(IIS)管理器-->授权规则-->添加允许规则,
在指定的用户中输入之前新建的用户名。权限中的读取、写入都勾选上
在开始菜单中输入window然后找到windows防火墙,点允许程序或功能通过windows防火墙
在允许程序通过windows防火墙通信中选择FTP服务器,点击下方的“允许运行另一程序”,在弹出窗口里,点“浏览”,找到C:\Windows\System32\inetsrv\inetinfo.exe,点添加,也就是上图中的Internet Infomation Services。将后面的两个框也都选中。因为在Win7下,FTP是IIS的一个组件,因此也必须在防火墙中将IIS设置为允许。而IIS又不在默认的列表中,因此得手动添加。
在windows防火墙中点高级设置,在入站规则中点新建规则,选中端口,点下一步。
在特定本地端口中输入21,点下一步。点击允许连接,点击下一步。
域、专用、公用都勾选上。点击下一步。
名称和描述都输入21,点击完成。
在地址栏输入ftp://加上FTP服务器的IP地址,会出现登录框,输入用户名和密码,登录成功则说明我们的FTP服务器配置成功啦。
配置过程参考了http://www.2cto.com/os/201409/337804.html
FTP收发文件
配置好了FTP服务器,我们就可以利用FTP协议收发文件啦。
创建远程目录
Private Sub MkFtpDir(ByVal path As String,ByVal ftpUsr As String,ByVal ftpPwd As String) Dim ftpReq As System.Net.FtpWebRequest = Nothing Dim ftpRes As System.Net.FtpWebResponse = Nothing Try ftpReq = System.Net.WebRequest.Create(path) ftpReq.Credentials = New System.Net.NetworkCredential(ftpUsr,ftpPwd) ftpReq.Method = System.Net.WebRequestMethods.Ftp.MakeDirectory ftpReq.KeepAlive = False ftpReq.UsePassive = False ftpReq.Timeout = 1000 ftpRes = ftpReq.GetResponse() ftpRes.Close() Catch ex As Exception End Try End Sub
本地上载文件到FTP服务器
MkFtpDir("ftp://192.168.0.197/21020408","liuchuan","1q2w3e4r") Dim wc As System.Net.WebClient = Nothing wc = New System.Net.WebClient() wc.Credentials = New System.Net.NetworkCredential("liuchuan","1q2w3e4r") Dim responseArray As Byte() = wc.UploadFile("ftp://192.168.0.197/21020408/20160125_142843_828256.tif","E:\ftp\21020408\20160125_142843_828256.tif") Application.DoEvents() wc.Dispose()
ftpReq = System.Net.WebRequest.Create(path) ftpReq.Credentials = New System.Net.NetworkCredential(ftpUsr,ftpPwd) ftpReq.Method = System.Net.WebRequestMethods.Ftp.ListDirectory ftpReq.KeepAlive = False ftpReq.UsePassive = False ftpReq.Timeout = 1000 ftpRes = ftpReq.GetResponse() '获取ftp的返回值 Dim strContent As String = "" Dim content(1024) As Byte Dim index_a As Integer = 0 Dim bufferLen As Integer = 0 index_a = ftpRes.GetResponseStream.Read(content,content.Length) bufferLen = bufferLen + index_a While index_a > 0 index_a = ftpRes.GetResponseStream.Read(content,content.Length) bufferLen = bufferLen + index_a End While strContent = strContent & System.Text.Encoding.UTF8.GetString(content,bufferLen) MessageBox(strContent)