(这个程序是我给另一位老兄写的,他主要是用于发送文件,你这个问题也是一样,你觖一下就行了。)
注1: 最好定义一个全局字符变量 strTXT,Lenx as Long型变量
strTXT="FileSize" 接收文件大小字节(此变量先设置)
strTXT="File" 接收文件
private sub form_load()
'服务器端
Winsock1.Close
Winsock1.LocalPort = 3016 '端口号
Winsock1.Listen ,监听网络
end sub
Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)
'被连接时的事件
Winsock1.Close
Winsock1.Accept requestID '连接
Winsock1.SendData "FileLenx" '发送出消息
End Sub
'以下这个事件是Winsock1收到数据时发生的
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
'(这里就是你所要的:比如说,这里收到字符"File"时,你就在这里写黑屏的代码.)
dim lenx as long
select case strtxt
case "FileSize" '接收文件大小
Winsock1.GetData lenx
Winsock1.SendData "File"
strTXT="File"
Case "File"
On Error GoTo errx
ReDim bytx(Lenx) As Byte
If bytesTotal >= Lenx Then
Winsock1.PeekData bytx, vbArray + vbByte, Lenx
Dim l As Long
l = FreeFile
Open "c:\Excl.xls" For Binary Access Write As #l
Put #1, , bytx
Close #l
msgbox "收到文件 C:\Excl.xls"
ReDim bytx(0)
End If
end select
End Sub
'以下是发送端(全局变量同上)
'(这里就是客户端)
Private sub command1_click()
Winsock1.Close
Winsock1.RemoteHost ="10.10.1.1" '服务器的IP
Winsock1.RemotePort = 3016 '服务器的端口号
Winsock1.Connect '连接服务器
end sub
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
'(这里就不要了,但是你也可以黑屏代码后发送一个字符来(如上面的"File"),来确认黑屏是否。
Dim i As Long
Winsock1.GetData strTXT
Select Case strTXT
Case "FileLenx"
lenx=filelen("c:\book1.xls")
Winsock1.SendData lenx
Case "File"
ReDim bytt(Lenx) As Byte
Dim l As Long
l = FreeFile
Open "c:\book1.xls" For Binary Access Read As #l
Get #l, , bytt
Close #l
Winsock1.SendData bytt
ReDim bytt(0)
ens select
End Sub