请教大神,java socket接口,TCP长连接,怎么解析和发送一种协议格式数据包

麻烦简单举个某种协议格式的例子进行说明,先谢谢鸟儿,解决后再加悬赏。急用... 麻烦简单举个某种协议格式的例子进行说明,先谢谢鸟儿,
解决后再加悬赏。急用
展开
 我来答
wzjlovetqy
2013-11-28 · TA获得超过160个赞
知道答主
回答量:64
采纳率:0%
帮助的人:65.2万
展开全部
建议你下载我的java版本至尊聊天程序源码下去参考。在CSDN或百度上找吧。
协议完全自己来定制,数据以字节发送,以什么开始,什么结束,中间分几段,都可由你自己来定,接收时,就按你定的规则来解析并还原。比如:我要的协议格式为
:>10:3:5:content:<
:>表示一条消息的开始。
10表示总消息长度(只是个代数,有可能不是10,需要你在发送前计算)
:为分隔符
3为头消息长度,也可能不是3
5表示后面的消息内容长度,甚至还可以定制,是否有图片,从多少位置开始是图片的数据。
:<表示结束标志
没有人限制你的协议。
关键一点:你在收取的时候,一定要注意数据可能会粘包,这个问题很头疼的。因为一般都是多线程模式。这需要你自己来处理它。一言难清。可以参考我的聊天程序。
追问

字数限制,只能用图片追问了

追答
你用字节数组来接收,先收完包头数据,注意,一定要收完包头数据。
然后将包头按它组装的结构来解析。就得到你要的数据了。
他第一个字节是个char,你就还原成char
最后是个msgtype,short,你也还原成short(2个字节)
剩下的内容是个int4字节。
关键一点,你每收一次,就要检查所收到的字节数组总数是否和发送的总数相配。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式