当前位置:编程学习 > VB >>

用VB实现一个基本的FTP服务端

需要代码,设计思路。。。。 --------------------编程问答-------------------- Option Explicit
Dim 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 ,  网络编程
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,