用Winsock传输文件。
服务器端用一个UDP和一个TCP,UDP隔一定时间广播一次服务器的IP地址。
客户端启动时,收到服务器广播后用TCP连接服务器。
如果文件太大,要用一个循环来传,Winsock一次传输的数据不能太大。退出时Kill了那个文件就行了。

解决方案 »

  1.   

    '***************发送端*********************Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)Dim bytBuffer() As Byte '读本地文件
    Const byt = 1000'每次读入字节数
    Dim a As LongPrivate Sub SendFile()
        Open strFileName For Binary Access Read As #1
            
            Do
                a = LOF(1) - Seek(1)
                
                ReDim bytBuffer(IIf(a >= byt, byt, a))
        
                Get 1, , bytBuffer
                
                sckFile.SendData bytBuffer
                Dim i As Integer
                For i = 1 To CInt(sleepTime)
                    Sleep 1     '***
                    DoEvents
                Next
                Caption = strCap & "  -  正在传送:" & (LOF(1) - Seek(1)) \ 1024
                DoEvents    '***
                If StopSend = True Then Exit Do
            Loop Until Seek(1) >= LOF(1)
            
        Close #1
        Erase bytBuffer '释放内存
    End Sub
    *************************************
    '********文件接收端***************
    Dim a() As BytePrivate Sub Form_Load()
        Winsock1.LocalPort = 2005
        Winsock1.Bind
        Open "to1.wav" For Binary Access Write As #1
        
    End SubPrivate Sub Form_Unload(Cancel As Integer)
        Winsock1.Close
        Close #1
    End SubPrivate Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
        Winsock1.GetData a, vbByte
        Put #1, , a
    End Sub'*********************完*********************** 代码看完了,该加分了哦。***********************************************
      

  2.   

    '服务器端
    Option Explicit
    Private Sub Form_Load()
        With wsUDP
            .Protocol = sckUDPProtocol
            .RemoteHost = "255.255.255.255"
            .RemotePort = 3434
        End With
        
        Timer1.Interval = 10000
        Timer1.Enabled = True
        
    End SubPrivate Sub Timer1_Timer()
        wsUDP.SendData wsUDP.LocalIP
    End Sub'客户端
    Option Explicit
    Dim bConnected As BooleanPrivate Sub Form_Load()
        With wsUDP
            .Protocol = sckUDPProtocol
            .RemoteHost = "255.255.255.255"
            .RemotePort = 3434
        End With
        bConnected=False
    End SubPrivate Sub wsUDP_DataArrival(ByVal bytesTotal As Long)
        Dim strIP As String
        Dim i As Integer
        
        If bConnected Then Exit Sub
        
        wsUDP.GetData strIP, vbString
        
        '连接服务器
        wsTCP.Connect strIP
        
        '......
        
    End Sub