关于FTP服务器程序的编撰

关于FTP服务器程序的编写
本帖最后由 sxlhl365 于 2011-07-15 15:20:13 编辑 想做一个简单的FTP服务器,只要有上传、下载、列举文件等基本功能,现在正在起始阶段,只做了一个FORM,放了一个winsock控件,调试时,打开FTP文件夹,发现程序进行到PASV这一步后就没反馈了,这时在FTP文件夹窗口出现错误“打开FTP服务器上的文件夹时发生错误。请检查是否有权限访问该文件夹。详细信息:无法与服务器建立连接”。请高手们指点。

Private Sub Form_Load()
   Winsock1.LocalPort = 9003
   Winsock1.Listen
End Sub

Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)
   Winsock1.Close
   Winsock1.Accept requestID
   Send "220 hello!"
End Sub


Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim s, args(1) As String, i As Integer
Winsock1.GetData s, vbString
Do While Right(s, 1) = Chr(13) Or Right(s, 1) = Chr(10)
    s = Left(s, Len(s) - 1)
Loop
i = InStr(1, s, " ")
If i > 0 Then
    args(0) = Left(s, i - 1)
    args(1) = Right(s, Len(s) - i)
Else
    args(0) = s
End If
Select Case UCase(args(0))
    Case "USER"
        Send "331 Password required for " & args(1)
    Case "PASS"
        If args(1) = "IEUser@" Then
            Send "230 User successfully logged in."
        Else
            Send "530 Not logged in, user or password incorrect!"
        End If
    Case "SYST"
        Send "215 Hello"
    Case "PWD"
        Send "257 " & Chr(34) & "/" & Chr(34) & " is current directory."
    Case "TYPE"
        Send "200 Type set to " & args(1)
    Case "CWD"
        DoChangeDirectory args(1)
    Case "PASV"
        Send "227 Entering Passive Mode (" & Winsock1.LocalIP & "," & Fix(9003 / 256) & "," & 9003 Mod 256 & ")."
    Case Else
        Send "502 Command not implemented."
End Select

End Sub
Private Sub Send(s As String)
    On Error Resume Next
    Winsock1.SendData Trim(s) & vbNewLine
    Sleep 0
End Sub

Private Function DoChangeDirectory(dir As String) As Integer
    Dim CurrentDir As String
    Dim Path As String, Root As String, i As Integer
    CurrentDir = "d:/software/"