VB.NET FTP传输及Win7下的FTP服务配置

FTP是File Transfer Protocol的英文简称,中文是文件传输协议。

我们可以通过一个支持FTP协议的客户端程序,连接到远程主机上的FTP服务器,上传或者下载文件。

TCO/IP协议中,FTP标准命令TCP端口号为21,Port方式数据端口为20。

FTP的任务是从一台计算机将文件传送到另一台计算机上,并不受操作系统的限制。


首先我们来进行一下Win7下的FTP服务的配置。

我们先新建访问FTP的用户。右键点击计算机,点击管理,进入本地用户和组中,新建用户。

控制面板-->程序和功能-->打开或关闭Windows功能

勾选上Internet信息服务中的全部。

控制面板-->管理工具

双击打开Internet信息服务(IIS)管理器。

在Internet信息服务(IIS)管理器中左边的网站上右键,点击“添加FTP站点”。

在站点信息中输入FTP站点名称和物理路径。点击下一步。

在绑定和SSL设置中,添加FTP服务器的IP地址。勾选自动启动FTP站点。SSL选“无”。点击下一步。

在身份验证和授权信息中,身份验证勾选基本。点击完成。

按Win + R 打开运行,输入services.msc打开服务窗口,找到Microsoft FTP Service,启动服务。

回到Internet信息服务(IIS)管理器中,右键点击新建的FTP站点,启动FTP。

Internet信息服务(IIS)管理器-->FTP授权规则-->编辑权限-->安全-->编辑-->添加。在选择用户或组中输入用户名,然后点击确认。在权限窗口中勾选完全控制。

VB.NET FTP传输及Win7下的FTP服务配置_第1张图片

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服务器配置成功啦。

VB.NET FTP传输及Win7下的FTP服务配置_第2张图片

配置过程参考了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()

获取ftp服务器上存在的文件名

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, 0, content.Length)
bufferLen = bufferLen + index_a
While index_a > 0
	index_a = ftpRes.GetResponseStream.Read(content, 0, content.Length)
	bufferLen = bufferLen + index_a
End While
strContent = strContent & System.Text.Encoding.UTF8.GetString(content, 0, bufferLen)
MessageBox(strContent)





你可能感兴趣的:(ftp,FTP服务器,FtpWebRequest)