可以直接用winsock发数据包的方法实现
如:
是用winsock控件的udp搞的
Private Sub Form_Load()
Winsock1.Protocol = sckUDPProtocol
Winsock1.RemoteHost = Winsock1.LocalIP
With Winsock1
.RemotePort = 1002 '远程机端口
.Bind 1002 '自己用的端口
End With
End Sub
Private Sub Command1_Click() '设计一个按钮,点击它发送文件“C:/nn.bmp”
Dim s1() As Byte '存放数据的数组
Open App.Path + "\nn.bmp" For Binary As #1
DoEvents
ReDim s1(1 To LOF(1)) '根据文件长度重新定义数组大小
Get #1, , s1()
Close #1
Winsock1.SendData s1() '发送
End Sub
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim s2() As Byte
Open App.Path + "/hello.bmp" For Binary As #2 '保存为"C:/hello.bmp"
ReDim s2(1 To bytesTotal) '根据发来字节长度重新定义数组大小
Winsock1.GetData s2() ‘获取数据
Put #2, 1, s2()
Close #2
End Sub
说明:(1)
该程序如在一台电脑上运行,则需编两个程序,这两个程序只有端口号的设置不同
若其中第一个可以为:
With Winsock1
.RemotePort = 1002 '远程机端口
.Bind 1003 '自己用的端口
End With
则另一个可以设置为:
With Winsock1
.RemotePort = 1003 '远程机端口
.Bind 1002 '自己用的端口
End With
说明:(2)
这个程序的适用性很小(具体是指每次传输的文件大小不能超过大约7-8KB左右),大文件需要切割后一个包一个包的传,由于小弟技术太差,这个问题至今没搞定,(哎,人世间最大的痛苦莫过如此呀!)