我用Winscock接收数据对方发送的数据
一个数据包可能包含一个或多个数据帧,
每个数据帧是可变长度的自已定义的数据有什么算法可以比较高效的从接收的数据将 单个数据帧 找出来,比如数据帧格式是包头->包尾长度(2Byte: 为整个数据帧的长度) + 数据帧类型(2byte) + (N字节内容,可变长度) + 校验和(1Byte)谢谢
讨论一下
谁能给个比较好的算法
散分100
一个数据包可能包含一个或多个数据帧,
每个数据帧是可变长度的自已定义的数据有什么算法可以比较高效的从接收的数据将 单个数据帧 找出来,比如数据帧格式是包头->包尾长度(2Byte: 为整个数据帧的长度) + 数据帧类型(2byte) + (N字节内容,可变长度) + 校验和(1Byte)谢谢
讨论一下
谁能给个比较好的算法
散分100
定义一个数据结构吧:
type Sock
Lenth as integer
Type as integer
Datas as string
Ecc as byte
end type
type DataHdr
Lenth as integer
Type as integer
Ecc as byte
end typedim bydata(Buffsize) as byte
dim hdr as DataHdrhdr.length = len(hdr)+yourdataLen
CopyMemory bydata(0), DataHdr, len(hdr)然后把你的数据从bydata(len(hdr))处写上即可
CopyMemory bydata(len(hdr)), yourData, yourDataLen接收时
CopyMemory DataHdr, byData(0), len(hdr)
然后把你的数据从bydata(len(hdr))处取出即可
CopyMemory yourBuffer, bydata(len(hdr)), hdr.length-len(hdr)
大概也就如此。
type Sock
Lenth as integer
Type as integer
Datas as string
Ecc as byte
end type
发送接受我都是定义数据结构
不过好象不能直接发送这个结构,不然长度对直接要求长度多两个字节,因为 Datas as string 原因,我用动态数据也是多两个字节,要单独处理,因为对方的系统是C语言编写的.