碰见这么个问题:
CS结构的系统,原来都是用VC++开发的,用Socket模型。现在用Java重写Server端,但不能修改通讯协议。我碰见的问题是:怎样方便地将数据封包到数据包里。
由于是客户端是用VC++开发的,因此可能会出现数据对齐问题,所以,我把收到每个收到的数据包保存在byte[]中,然后根据格式进行解释并提取出数据。但是发送数据的时候就感到很麻烦。因为,我认为所有将要发送出去的数据也必须首先保存在byte[]中,这样才能保证严格遵守数据包的格式,这时候就遇见了问题。比如:
一个数据包的格式为:
字节0~1:包长度
字节2:包代号
字节3~10:字符串
字节11~14:一个数字
数据已经确定后,怎样把它们按顺序和长度压进一个byte[]中就成了个难题。因为数据包的格式有好多,长度、数据类型等等都不一样,能不能找到一个通用的方法呢?不会必须为每个都单独处理吧?