Imports System Imports System.Net Imports System.IO Imports System.Text Imports System.Net.Sockets
‘FTP 类
Public Class clsFTP #Region "Class Variable Declarations" Private m_sRemoteHost, m_sRemotePath, m_sRemoteUser As String Private m_sRemotePassword, m_sMess As String Private m_iRemotePort, m_iBytes As Int32 Private m_objClientSocket As Socket Private m_iRetValue As Int32 Private m_bLoggedIn As Boolean Private m_sMes, m_sReply As String
‘设置用户来对FTP服务器读取和写入数据的数据包的大小 ‘对下列具体大小
Public Const BLOCK_SIZE = 512 Private m_aBuffer(BLOCK_SIZE) As Byte Private ASCII As Encoding = Encoding.ASCII Public flag_bool As Boolean ‘普通变量定义 Private m_sMessageString As String #End Region
#Region "Class Constructors"
‘Main类的构造器 Public Sub New() m_sRemoteHost = "microsoft" m_sRemotePath = "." m_sRemoteUser = "anonymous" m_sRemotePassword = "" m_sMessageString = "" m_iRemotePort = 21 m_bLoggedIn = False End Sub
‘参数化的构造器
Public Sub New(ByVal sRemoteHost As String, _ ByVal sRemotePath As String, _ ByVal sRemoteUser As String, _ ByVal sRemotePassword As String, _ ByVal iRemotePort As Int32)
Public Property RemoteHostFTPServer() As String ‘得到FTP服务器的名称 Get Return m_sRemoteHost End Get
‘设置FTP服务器的名称
Set(ByVal Value As String) m_sRemoteHost = Value End Set End Property
‘设置或得到你想链接的FTP服务器的FTP端口
Public Property RemotePort() As Int32
‘得到FTP端口号
Get Return m_iRemotePort End Get
‘设置FTP端口数号
Set(ByVal Value As Int32) m_iRemotePort = Value End Set End Property
‘设置或得到你想链接的FTP服务器的远程路径
Public Property RemotePath() As String
‘得到远程路径 Get Return m_sRemotePath End Get ‘设置远程路径 Set(ByVal Value As String) m_sRemotePath = Value End Set End Property
‘设置你想链接的远程FTP服务器的密码
Public Property RemotePassword() As String Get Return m_sRemotePassword End Get Set(ByVal Value As String) m_sRemotePassword = Value End Set End Property
‘设置或得到你想链接远程的FTP服务器的用户
Public Property RemoteUser() As String Get Return m_sRemoteUser End Get
Set(ByVal Value As String) m_sRemoteUser = Value End Set End Property
‘设置messagestring类
Public Property MessageString() As String Get Return m_sMessageString End Get
Set(ByVal Value As String) m_sMessageString = Value End Set End Property
#End Region #Region "Public Subs and Functions"
‘从文件系统中返回一个文件列表。在string()函数中返回文件。
Public Function GetFileList(ByVal sMask As String) As String() Dim cSocket As Socket Dim bytes As Int32 Dim seperator As Char = ControlChars.Lf Dim mess() As String
m_sMes = "" ‘检查你是否登录到FTP服务器上 If (Not (m_bLoggedIn)) Then Login() End If
cSocket = CreateDataSocket() ‘发送FTP命令
SendCommand("NLST " & sMask) If (Not (m_iRetValue = 150 Or m_iRetValue = 125)) Then MessageString = m_sReply Throw New IOException(m_sReply.Substring(4)) End If m_sMes = ""