每周一题——socket分包

来源:互联网 发布:淘宝男装免费代理 编辑:程序博客网 时间:2024/06/05 11:18
服务器使用socket流要向客户端发送多个包,包中的数据从0x00到0xff都有可能;
包在一个socket流中传输,socket能保证接收和发送的字节顺序相同,但是多个包在流中是连续传输的,接收方法可能会一次收到几个包的数据,需要把它们拆开;
请设计基于分隔符打包和解包的方法,注意避免包中的数据被误认为是分隔符,方法参考定义如下:
byte[] pack(List<byte[]> packages); //多个包变成一个流
List<byte[]> unpack(byte[] streamData); //从流中恢复多个包
为了区分不同的数据包,可以采用在包头带有包长度的办法,也可以在包之间插入分隔符,后者有什么优势?适合于什么情况?
0 0
原创粉丝点击