如何用java写数据包?

已知道数据表头structData_Head{unsignedintMsgLenth;//消息总长度(含消息头及消息体)unsignedintCommandID;//命令... 已知道数据表头struct Data_Head{ unsigned int MsgLenth; //消息总长度(含消息头及消息体) unsigned int CommandID; //命令标识}; 还有包体://绑定包体struct Data_Bind_body{ char LoginName[16]; //用户名 char LoginPassword[16]; //密码(MD5后) char Reserve[8]; //密码}; struct Data_Bind_Resp{ unsigned char Result; //返回提交状态:0:成功 1:失败 char Reserve[8]; //保留}; //解除绑定包体struct Data_UNBind_body{ char Reserve[8]; //保留}; struct Data_UNBind_Resp{ unsigned char Result; //返回提交状态:0:成功 1:失败 char Reserve[8]; //保留}; 那么我如何用java的socket发送这个数据包?应该怎么构建?是不是构建一串字符串来发送? 展开
 我来答
lylegend13
2011-11-04 · TA获得超过4696个赞
知道大有可为答主
回答量:1701
采纳率:0%
帮助的人:1730万
展开全部
你好,java中的socket编程,要把数据最后转成byte[]来进行通信,对于你这种情况,我认为你至少有两种方法可行

1、在java中也整一个类对象,等效于你这里的struct,然后使用java中把Object转换成byte[]的方法
2、把struct里的数据按照一定的格式存成字符串,然后再把字符串转成byte[]

方法一可以参考下这个代码:
public static byte[] convertToByteArray(Object obj) throws IOException{
ObjectOutputStream os = null;
ByteArrayOutputStream byteStream = new ByteArrayOutputStream(5000);
os = new ObjectOutputStream(new BufferedOutputStream(byteStream));
os.flush();
os.writeObject(obj);
os.flush();
byte[] sendBuf = byteStream.toByteArray();
os.close();
return sendBuf;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式