111,072
社区成员




请教一下,目前在做一个HSMS协议通讯,我是服务端,在接收客户端发来的数据时,经常总是先接收到前2个字节或前4-6个字节,比如00,0000,00000A,总是出现这样的情况,给解析带来很大困扰,
有什么方式可以判断或等待接收到全部数据再进行下一步操作呢?
接收的字节长度不固定。
一般接收内容为:
SEND S6F202:S6F202 W [D=0] [len=99] [SB=11]
<L,3
<A,40 '44-9744109A1149L04BGMNBA1E128D ' [PNLID]>
<A,1 'G' [RESULT]>
<A,40 ' ' [TXT]>
>
其中len=99 这个是字节长度,但是不固定。
socket是一种流设备,你需要不停的读取进行缓存,并且在缓存中检索找到完整的包,然后才说分析。你如果只收到几个字节,说明后续的还在发送中。