有个Java 项目,通过Socket Tcp长连接通信方式向服务器发送消息。 100

消息由消息头和消息体组成,消息头采用结构体格式,消息头TotalLength2UnsignedInteger消息总长度(含消息头及消息体)MessageType2Unsi... 消息由消息头和消息体组成,消息头采用结构体格式,

消息头
TotalLength 2 Unsigned Integer 消息总长度(含消息头及消息体)
MessageType 2 Unsigned Integer 消息类型 0x0004
SequenceId 4 Unsigned Integer 交互的流水号,顺序累加,步长为1

消息体
Reason 1 Unsigned Integer 连接释放的原因,各个值代表意义如下:
1: 用户正常释放。
2: 数据类型错误。
3: 超出机器处理能力。

问:客户端请求时的数据格式怎么封装?
展开
 我来答
此人为匿名用户
2015-08-29 · TA获得超过257个赞
知道答主
回答量:58
采纳率:0%
帮助的人:49.7万
展开全部
你这消息头、消息体的结构格式都定下来了,总长度就是固定的啊?消息体的长度不是一共2+2+4+1=9个字节么?消息格式肯定要按照服务端的要求进行发送,明显服务端不是java的程序。。但是java里是没有Unsigned Integer这种数据类型的(java的stream操作里提供了一些unsigned的方法,或者自己写方法来生成对应的字节格式),你可以按照他的要求,使用字节数组封装好,然后发送。
针对这个示例消息,你可以:
创建一个长度为9的字节数组。把“9”变成byte放入前两个字节(前两个字节数据应该为:0x00, 0x09。这是第一个字段,长度),后面的字段数据以此类推。一个字段一个字段处理成服务器要求的格式。
然后把字节流发送给服务端。
追问
嗯,给个例子吧
jippo08456
2015-08-25 · TA获得超过2630个赞
知道小有建树答主
回答量:915
采纳率:0%
帮助的人:624万
展开全部
问服务端要样例。
追问
TotalLength 是怎么算的?

请求格式我直接拼装为字符串 80x000411 可以吗, 然后转换为字节数组发送
追答
消息总长度(含消息头及消息体)
我的理解是:TotalLength获取你传输的字符串长度。
TotalLength包含了他自身的长度,TotalLength的结果会影响TotalLength自身的值,我觉得这样设计是有问题的。

最好还是让对端提供样例。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式