用Winsock传输文件。
服务器端用一个UDP和一个TCP,UDP隔一定时间广播一次服务器的IP地址。
客户端启动时,收到服务器广播后用TCP连接服务器。
如果文件太大,要用一个循环来传,Winsock一次传输的数据不能太大。退出时Kill了那个文件就行了。
服务器端用一个UDP和一个TCP,UDP隔一定时间广播一次服务器的IP地址。
客户端启动时,收到服务器广播后用TCP连接服务器。
如果文件太大,要用一个循环来传,Winsock一次传输的数据不能太大。退出时Kill了那个文件就行了。
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'*********************完*********************** 代码看完了,该加分了哦。***********************************************
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