用VB实现一个基本的FTP服务端
需要代码,设计思路。。。。 --------------------编程问答-------------------- Option ExplicitDim bActiveSession As Boolean
Dim hOpen As Long, hConnection As Long
Dim dwType As Long
Dim EnumItemNameBag As New Collection
Dim EnumItemAttributeBag As New Collection
Public Function FtpUp(tFileName As String, NewFileName As String, FtpPath As String) As Boolean
Dim bRet As Boolean
Dim szFileRemote As String, szDirRemote As String, szFileLocal As String
Dim szTempString As String
Dim nPos As Long, nTemp As Long
FtpUp = False
'初始Session
hOpen = InternetOpen(scUserAgent, INTERNET_OPEN_TYPE_DIRECT, vbNullString, vbNullString, 0)
'连接
If hOpen <> 0 Then 'hopen判断是否打开
Dim nFlag As Long
nFlag = INTERNET_FLAG_PASSIVE
hConnection = InternetConnect(hOpen, FtpUrl, INTERNET_INVALID_PORT_NUMBER, FtpUser, FtpPass, INTERNET_SERVICE_FTP, nFlag, 0)
End If
'上传
szTempString = FtpUrl & FtpPath
szDirRemote = Right(szTempString, Len(szTempString) - Len(FtpUrl))
szFileRemote = GetFileName(tFileName)
szFileLocal = tFileName
If (szDirRemote = "") Then szDirRemote = "\"
rcd szDirRemote
bRet = FtpPutFile(hConnection, szFileLocal, NewFileName, dwType, 0)
FtpUp = bRet
'断开
' bDirEmpty = True
If hConnection <> 0 Then InternetCloseHandle hConnection
hConnection = 0
ClearBag
'断开Session
If hConnection <> 0 Then InternetCloseHandle (hConnection)
If hOpen <> 0 Then InternetCloseHandle (hOpen)
hConnection = 0
hOpen = 0
bActiveSession = False
bActiveSession = False
End Function
Public Function rcd(pszDir As String)
Dim sPathFromRoot As String
Dim bRet As Boolean
If InStr(1, pszDir, FtpUrl) Then
sPathFromRoot = Mid(pszDir, Len(FtpUrl) + 1, Len(pszDir) - Len(FtpUrl))
Else
sPathFromRoot = pszDir
End If
If sPathFromRoot = "" Then sPathFromRoot = "/"
bRet = FtpSetCurrentDirectory(hConnection, sPathFromRoot)
End Function
Public Function FtpDel(tFileName As String, FtpPath As String) As Boolean
Dim bRet As Boolean
Dim szFileRemote As String, szDirRemote As String, szFileLocal As String
Dim szTempString As String
Dim nPos As Long, nTemp As Long
FtpDel = False
'初始Session
hOpen = InternetOpen(scUserAgent, INTERNET_OPEN_TYPE_DIRECT, vbNullString, vbNullString, 0)
'连接
If hOpen <> 0 Then 'hopen判断是否打开
Dim nFlag As Long
nFlag = INTERNET_FLAG_PASSIVE
hConnection = InternetConnect(hOpen, FtpUrl, INTERNET_INVALID_PORT_NUMBER, FtpUser, FtpPass, INTERNET_SERVICE_FTP, nFlag, 0)
End If
szTempString = FtpUrl & FtpPath & "/" & tFileName
szFileRemote = szTempString
nPos = 0
nTemp = 0
Do
nTemp = InStr(1, szTempString, "/", vbBinaryCompare)
If nTemp = 0 Then Exit Do
szTempString = Right(szTempString, Len(szTempString) - nTemp)
nPos = nTemp + nPos
Loop
szDirRemote = Left(szFileRemote, nPos)
szFileRemote = Right(szFileRemote, Len(szFileRemote) - nPos)
szFileLocal = App.Path
rcd szDirRemote
bRet = FtpDeleteFile(hConnection, tFileName)
FtpDel = bRet
If hConnection <> 0 Then InternetCloseHandle hConnection
hConnection = 0
ClearBag
'断开Session
If hConnection <> 0 Then InternetCloseHandle (hConnection)
If hOpen <> 0 Then InternetCloseHandle (hOpen)
hConnection = 0
hOpen = 0
bActiveSession = False
bActiveSession = False
End Function
Public Function ClearBag()
Dim Num As Integer
For Num = 1 To EnumItemNameBag.Count
EnumItemNameBag.Remove 1
Next Num
For Num = 1 To EnumItemAttributeBag.Count
EnumItemAttributeBag.Remove 1
Next Num
End Function
补充:VB , 网络编程