如何用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发送这个数据包?应该怎么构建?是不是构建一串字符串来发送?
展开
1个回答
展开全部
你好,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;
}
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;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询