标题:VB如何分辨Winsock发过来的是消息还是文件
只看楼主
leziyi
Rank: 1
等 级:新手上路
帖 子:52
专家分:0
注 册:2016-10-30
结帖率:85.71%
 问题点数:0 回复次数:2 
VB如何分辨Winsock发过来的是消息还是文件
Private Sub Listen_DataArrival(Index As IntegerByVal bytesTotal As Long)

Dim Data, b

Dim bytData() As Byte

Dim lLenFile As Long

Dim f, a

Listen.GetData Data

b = Time()

If Data = "212f15r5SDDD511b/',],[D4" Then

   f = FreeFile

   Open FileName For Binary As #f ''FileName是文件名

   lLenFile = LOF(f)

   ReDim bytData(1 To bytesTotal)

   Listen.GetData bytData
   
   Fil (FileName)
   
   If a = 0 Then
   
      MsgBox "文件已存在!"
      
      Exit Sub
      
   End If

   If lLenFile = 0 Then        'lLenFile=0表示是第一次打开文件,这里有个问题,就是如果如果该文件存在的话,就会出错,应该在打开前检查文件是否存在

      Put #f, 1, bytData

   Else

      Put #f, lLenFile + 1, bytData

End If

   Close #f
   
End If

End Sub
搜索更多相关主题的帖子: VB 文件 Dim If End 
2018-10-27 09:32
wmf2014
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:216
帖 子:2039
专家分:11273
注 册:2014-12-6
得分:0 
这你需要自定义通讯协议或使用ftp服务或http文件传输协议,在局域网可以指定一台电脑为ftp服务器,如果只是点对点通讯和传输文件则自定义协议即可,比如在通讯内容头部加字母“SCHar”说明后面的内容是字符,加字母“SFS”是开始传输文件,这时进行取文件名、打开写文件操作,并将后续的内容作为文件记录写进文件,“SFM”是追加文件记录操作并将后续的内容作为文件记录写进文件,“SFE”是文件传输完成命令,此时接受方可关闭打开的文件了。
自定义协议还有好多方面要考虑,当初我是这样在局域网玩的,很好实现。

能编个毛线衣吗?
2018-10-28 10:29
leziyi
Rank: 1
等 级:新手上路
帖 子:52
专家分:0
注 册:2016-10-30
得分:0 
怎么自定义协议
2018-10-28 13:51



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-490727-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.369559 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved