注册 登录
编程论坛 VB6论坛

VB如何分辨Winsock发过来的是消息还是文件

leziyi 发布于 2018-10-27 09:32, 1212 次点击
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
2 回复
#2
wmf20142018-10-28 10:29
这你需要自定义通讯协议或使用ftp服务或http文件传输协议,在局域网可以指定一台电脑为ftp服务器,如果只是点对点通讯和传输文件则自定义协议即可,比如在通讯内容头部加字母“SCHar”说明后面的内容是字符,加字母“SFS”是开始传输文件,这时进行取文件名、打开写文件操作,并将后续的内容作为文件记录写进文件,“SFM”是追加文件记录操作并将后续的内容作为文件记录写进文件,“SFE”是文件传输完成命令,此时接受方可关闭打开的文件了。
自定义协议还有好多方面要考虑,当初我是这样在局域网玩的,很好实现。
#3
leziyi2018-10-28 13:51
怎么自定义协议
1