VB WINSOCK 实现文件传输

接收端接收到发送端发来的数据,接收到的数据里面有文件名和文件里面的内容,问题:如何接收到的数据将文件名和文件里面的内容分开代码如下:发送端:DimfpAsStringDi... 接收端接收到发送端发来的数据,接收到的数据里面有文件名和文件里面的内容,
问题:如何接收到的数据将文件名和文件里面的内容分开
代码如下:
发送端:
Dim fp As String
Dim fn As String
Dim fpn As String
Dim data() As Byte
Dim fl As Long
Private Sub Command1_Click()
fpn = fp + fn
fl = FileLen("D:\vb\winsockwork\fsd\1.txt")
' MsgBox fpn
' MsgBox fl
Winsock1.SendData fn
'Winsock1.SendData fl
Call dwj
End Sub
Private Sub Form_Load()
fp = "D:\vb\winsockwork\fsd\"
fn = "1.txt"
Text1.Text = fp
Text2.Text = 9001
Winsock1.Protocol = sckTCPProtocol
Winsock1.LocalPort = Val(Text2.Text)
Winsock1.Listen
Form2.Show
'MsgBox fl
End Sub
Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)
If Winsock1.State <> sckClosed Then Winsock1.Close
Winsock1.Accept requestID
'MsgBox "请求连接"
End Sub
Sub dwj()
'MsgBox "读文件"
Open fpn For Binary As #1
ReDim data(LOF(1) - 1)
Get #1, , data()
Close 1
Winsock1.SendData data
'将读取的文件写入2.txt判断数是否傅一致
'Open "D:\vb\winsockwork\fsd\2.txt" For Binary As #2
'Put #2, , data()
'Close 2
End Sub
接收端:Dim fp As String
Dim fn As String
Dim fpn As String
Dim data() As Byte
Dim fl As Long
Private Sub Form_Load()
fp = "D:\vb\winsockwork\jsd\"
Winsock1.Protocol = sckTCPProtocol
Winsock1.RemoteHost = "127.0.0.1"
Winsock1.RemotePort = Val( 9001)
Winsock1.Connect
End Sub
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Winsock1.GetData fn, vbString, bytesTotal
'Winsock1.GetData fl, vbLong
fpn = fp + fn
Open fpn For Binary As #3
Winsock1.GetData data
Put #3, , data
Close 3
End Sub
展开
 我来答
wangyuchen9988
2014-02-11 · 超过11用户采纳过TA的回答
知道答主
回答量:44
采纳率:0%
帮助的人:23.7万
展开全部
可以在senddata的时候在数据前加入标识,如将fn=“fn [文件名]”,接收时可以用left函数提取标识,如Winsock1.GetData fn后 a = left(fn,2) if a = “fn" then ……
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
镭速传输
2024-10-28 广告
在深圳市云语科技有限公司,我们深知远程传输大文件的重要性与便捷性。为此,我们推荐使用高效的文件传输服务,这些服务通常支持断点续传,确保大文件传输的稳定与安全。用户只需简单上传,系统即可自动处理,无论文件大小,都能实现快速、可靠的远程传输。同... 点击进入详情页
本回答由镭速传输提供
FMUD1
推荐于2016-03-22 · TA获得超过1008个赞
知道大有可为答主
回答量:1289
采纳率:71%
帮助的人:888万
展开全部
假设文件名占用8个字节,将发送文件的第1个字节存储为文件名的长度8,然后用第2-第9个字节存储文件名,接收时,先获取第一个字节,得到文件名的长度8,然后截取在byte中的索引1-8的数据,还原文件名。
供参考
追问
我用了3个senddata  发送数据 .SendData fn   '文件名  .SendData fl    ‘文件大小 .SendData data    ’文件内容。我接收到的数据.getData fn可以接收到全部数据,.getData data 接收到的数据是空?比如:我需要将文件名,文件大小,文件内容发送到接收端,接收端.getData 发送端和接收端的语句应该怎么写?
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式