Vb 问题 关于UDP的传输编程

来源:百度知道 编辑:UC知道 时间:2024/05/13 03:12:29
Private Sub Winsock0_DataArrival(ByVal bytesTotal As Long)
Dim FileByte() As Byte
Winsock0.GetData FileByte, vbArray + vbByte '接收类型为:字节数组
Dim mendByte() As Byte, i As Long, j As Long
Dim temp As String, temp1 As String
'获得包长
j = UBound(FileByte)
'合并包头
For i = 0 To 7 Step 2 《《《《《《
temp = temp & Chr$(FileByte(i)) <<<这两句是什么意思呀??
Next
'比较长度看丢包没有
If Val(temp) = j Then

ReDim mendByte(j - 8)
' 提出包头
For i = 0 To j - 8
mendByte(i) = FileByte(i + 7)
Next
' 写文件
Put #FileNumber, , mendByte
' 发送继续发送的请求
frmmain.Winsock0.SendData "ok"
Else
'出现丢包,请求重发
frmmain.Winsock0.SendData "no"
End If
End Sub

这是关于UDP的传输 类似模仿TCP三次握手的 For i

看样子是用字节流模拟TCP的包头。

估计前8个字节是UNICODE的字符串,用于描述包的长度。

它用一个循环,把第1、3、5、7个字节提取出来(2、4、6、8的值是0)合并成一个代表数字的字符串,然后转换成数字和包长比较,看有没有丢失数据。