在VB中要传送字符串:
Dim strData As String
strData = \"Test\"
Winsock1.SendData strData
但是如果你传送的二进制文件,你还能用String变量来存放吗?从理论上分析是不行的。文件虽然可以传,但是接受的文件和发送的不一样,原因可能是二进制文件里可以有任何\"字符\",但是不是所有的字符都可以放在String变量里。
除了String类型的变量,VB中其他类型的变量都只有几个字节长,难道一次只能发几个字节吗?那样岂不是要累死机器了!其实,情况没有那么悲观,我们完全可以使用数组来解决这个问题,就是使用byte数组。把要传送的文件都读到数组里,然后发送出去。程序如下:
FileName 为要传送的文件名,WinS为发送文件的WinSock控件。这是一个发送端的程序。
Public Sub SendFile(FileName As String, WinS As Winsock)
Dim FreeF As Integer \’空闲的文件号
Dim LenFile As Long \’文件的长度
Dim bytData() As Byte \’存放数据的数组
FreeF = FreeFile \’获得空闲的文件号
Open FileName For Binary As #FreeFile \’打开文件
DoEvents
LenFile = LOF(FreeFile) \’获得文件长度
ReDim bytData(1 To LenFile) \’根据文件长度重新定义数组大小
Get #FreeFile, , bytData \’把文件读入到数组里
Close #FreeFile \’关闭文件
WinS.SendData bytData \’发送数据
End Sub
接受端的程序如下:
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim bytData() As Byte
Dim f
f = FreeFile
Open strFileName For Binary As #f
ReDim bytData(1 To bytesTotal)
Winsock1.GetData bytData
Put #f, i, bytData
i = i + bytesTotal \’保证每次写都是在文件的末尾, i是个全局变量
Close #f
End Sub
本文来自 280文秘网(https://www.it280.com),转载请保留网址和出处
【VB中使用WinSock控件传送文件】相关文章:
2025年外省高中学业水平合格性考试成绩转入江苏认定的通告公布05-07
Vb中控件的自动排列05-07
写未来的作文300字05-07
中国大地保险公司实习报告05-07
小学父爱的作文600字05-07
荷花作文600字05-07
07年4月北师大“中国古代文学史(一)”串讲(5)05-07
寓言作文300字05-07
2023年广东梅州中考成绩查询时间及查分入口[7月7日起]05-07
关于清明节的英语作文:清明节05-07
