打印本文 打印本文 关闭窗口 关闭窗口
VB实现局域网内的文件传输
作者:武汉SEO闵涛  文章来源:敏韬网  点击数2774  更新时间:2009/4/23 15:43:11  文章录入:mintao  责任编辑:mintao
Private Sub Timer2_Timer()

    If WinsockSend.State = sckConnected Then

   

        Timer2.Enabled = False

       

        cmdConnect.Enabled = False

       

    ElseIf WinsockSend.State <> 1 And WinsockSend.State <> 6 And WinsockSend.State <> 7 And WinsockSend.State <> 8 And WinsockSend.State <> 9 Then

   

        WinsockSend.Connect txtHost.Text, ReceivePort

       

    ElseIf WinsockSend.State = 8 Or WinsockSend.State = 9 Then

   

        WinsockSend.Close

    End If

   

   

End Sub

 

Private Sub WinsockReceive_ConnectionRequest(ByVal requestID As Long)

 

    If WinsockReceive.State <> sckClosed Then WinsockReceive.Close

   

    WinsockReceive.Accept requestID

   

   

End Sub

 

Private Sub WinsockReceive_DataArrival(ByVal bytesTotal As Long)

   

    ReDim arrdata(0 To bytesTotal - 1)

   

    WinsockReceive.GetData arrdata, vbByte + vbArray

   

    myMSG = StrConv(arrdata, vbUnicode)        ''''二进制转为字符串

   

    Select Case Mid(myMSG, 1, 17)

   

    Case filecomesMSG ''''这些消息发送方和接受方都可收到

        ''''显示保存对话框

        On Error GoTo errorhandle

        CommonDialog1.FileName = Mid(myMSG, 17, Len(myMSG))

        CommonDialog1.DialogTitle = "选择保存文件的路径"

        CommonDialog1.ShowSave

        filesave = FreeFile

       

        Receivebyte = 0

        cmdSend.Enabled = False

        WinsockReceive.SendData RecevieIsReadyMSG

    Case FileisOverMSG

        Close #filesave

       

        MsgBox ("文件传输成功!") ''''大家一起处理

       

        cmdConnect.Enabled = True

       

        cmdSend.Enabled = True

       

        Label1.Caption = "准备传输>>>"

       

        ProgressBar1.Value = 0

       

        WinsockReceive.SendData FileisOverMSG

       

        WinsockReceive.Close

       

        WinsockReceive.Listen

       

    Case filecountMSG

        FileSize = Mid(myMSG, 18, Len(myMSG))

        Open CommonDialog1.FileName For Binary Access Write As #filesave

        WinsockReceive.SendData RemoteIsReadyMSG

        Label1.Caption = "文件准备传输!"

        FileisOver = False

       

    Case Else

        If Receivebyte < FileSize Then

            Receivebyte = Receivebyte + bytesTotal

            Put #filesave, , arrdata

            WinsockReceive.SendData RemoteIsReadyMSG

            ProgressBar1.Value = Int((100 / FileSize) * Receivebyte)

        End If

    End Select

    Exit Sub

errorhandle:

    WinsockReceive.SendData RemoteDenyMSG

    cmdConnect.Enabled = True

   

End Sub

 

Private Sub WinsockSend_DataArrival(ByVal bytesTotal As Long)

    WinsockSend.GetData myMSG

    Select Case myMSG

   

    Case RecevieIsReadyMSG

        WinsockSend.SendData filecountMSG & FileSize

    

上一页  [1] [2] [3]  下一页

打印本文 打印本文 关闭窗口 关闭窗口