关于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/"
On Error Resume Next
dir = Replace(dir, "", "/")
Do While Left(dir, 1) = "/"
dir = Right(dir, Len(dir) - 1)
Loop
Do While Right(dir, 1) = "/"
dir = Left(dir, Len(dir) - 1)
Loop
If dir = "" Then '根目录
Send "250 " & CurrentDir & " OK"
Exit Function
'首先判断是否在当前目录下的文件夹
ElseIf FSO.FolderExists(CurrentDir & dir) Then
CurrentDir = CurrentDir & dir & "/"
Winsock1.SendData "250 " & CurrentDir & " OK"
Exit Function
End If
Winsock1.SendData "550 " & dir & "Directory not found."
End Function
[解决办法]
好像最近这里人气不旺,发布了很久的帖子还在顶部
[解决办法]
自己顶顶吧
[解决办法]
去我的下载里找,有源码!
当然不是我帮的,我也是下载来的....
[解决办法]
没找到你说的源码。源码我也有很多,就是想自己写一个,集成到一个应用程序中,简单一些就行,只要能完成FTP服务器的基本功能就行,如上传、下载、浏览文件夹。能留个邮箱,我发个源程序给你,帮我查查问题,这问题已缠绕我好久了。
[解决办法]
我发现好多FTP服务器的源码都用两组WINSOCKet控件实现文件传输,而我想用同一个SOCKET完成,不知这样有没有问题
[解决办法]
看了一些源程序,自己解决了,谢谢关注
