⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 modfiletransferclient.bas

📁 关于WINSOCK控件基本编程的例程,提供电子邮件例程
💻 BAS
字号:
Attribute VB_Name = "modFileTransferClient"
Declare Function GetTickCount Lib "kernel32" () As Long


Public Const Port = 1256                ' 端口
Public Const MAX_CHUNK = 4196           ' 一次传递数据量

Public bReplied          As Boolean     ' 服务器回复时为True
Public lTIme             As Long        ' 测试连接时间


Sub SendFile(Fname As String)
    Dim DataChunk As String
    Dim passes As Long
    SendData "OpenFile," & Fname$
    Pause 200
    Open Fname$ For Binary As #1
       
        Do While Not EOF(1)
          passes& = passes& + 1
          DataChunk$ = Input(MAX_CHUNK, #1)
          SendData DataChunk$
          Status "Transfering... " & (MAX_CHUNK * passes&) & " bytes"
          frmClient.txtView = frmClient.txtView & DataChunk$
          Pause 200
          DoEvents
        Loop ' 知道所有数据传递完毕
        SendData "CloseFile,"
        '传递完毕后发送标志
        Status "Connected."
        passes& = 0
    Close #1
End Sub
Function GetFileName(Fname As String) As String
    Dim i As Integer
    Dim tempStr As String
    For i% = 1 To Len(Fname$)
       tempStr$ = Right$(Fname$, i%)
       If Left$(tempStr$, 1) = "\" Then
         GetFileName$ = Mid$(tempStr$, 2, Len(tempStr$))
         Exit Function
       End If
    Next i
End Function
Public Sub Status(Msg As String)
'状态
   frmClient.lblStatus = " 状态: " & Msg$
End Sub
Function SendData(sData As String) As Boolean
    On Error GoTo ErrH
    Dim TimeOut As Long
    bReplied = False
    frmClient.tcpClient.SendData sData
    Do Until (frmClient.tcpClient.State = 0) Or (TimeOut < 100000)
        DoEvents
        TimeOut = TimeOut + 1
        If TimeOut > 100000 Then Exit Do
    Loop
    SendData = True
    Exit Function
    
ErrH:
    SendData = False
    MsgBox Err.Description, 16, "Error #" & Err.Number
    Status "Disconnected."
End Function

Public Function EvalData(sIncoming As String, iRtLt As Integer, _
                  Optional sDivider As String) As String
   Dim i As Integer
   Dim tempStr As String
   Dim sSplit As String
   If sDivider = "" Then
      sSplit = ","
   Else
      sSplit = sDivider
   End If
   Select Case iRtLt
      Case 1
          For i = 0 To Len(sIncoming)
            tempStr = Left(sIncoming, i)
            
            If Right(tempStr, 1) = sSplit Then
              EvalData = Left(tempStr, Len(tempStr) - 1)
              Exit Function
            End If
          Next
      Case 2
          For i = 0 To Len(sIncoming)
            tempStr = Right(sIncoming, i)
            
            If Left(tempStr, 1) = sSplit Then
              EvalData = Right(tempStr, Len(tempStr) - 1)
              Exit Function
            End If
          Next
   End Select
   
End Function
Sub Pause(HowLong As Long)
'暂停已平衡速度和缓冲
    Dim u%, tick As Long
    tick = GetTickCount()
    Do
      u% = DoEvents
    Loop Until tick + HowLong < GetTickCount
End Sub

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -