我需要在Java中为Blackberry设备重新创建它:
char cPacketData[1024];
int thisPacketLength=( X_PACKET_SPACE*12 ) + ( 20*X_PACKET_SPACE );
(*(int *) (cPacketData)) =X_PACKET_START;
(*(int *) (cPacketData+X_PACKET_SPACE)) =thisPacketLength;
(*(int *) (cPacketData+X_PACKET_SPACE*2)) =X_PACKET_POSITION_DATA;
(*(int *) (cPacketData+X_PACKET_SPACE*3)) =positionX;
(*(int *) (cPacketData+X_PACKET_SPACE*4)) =positionY;
send(mSocket,(const char *)&cPacketData,thisPacketLength,0);
我已经知道我应该使用
OutputStreamWriter
但我不知道如何用Java重新创建该数据包,请你帮忙吗?
的更新 的 好吧,我想我做得对:
char[] payload = new char[100];
int start=9999;
payload[3] = (char)((start >> 24) & 0XFF);
payload[2] = (char)((start >> 16) & 0XFF);
payload[1] = (char)((start >> 8) & 0XFF);
payload[0] = (char)((start >> 0) & 0XFF);
int len=100;
payload[X_PACKET_SPACE+3] = (char)((len >> 24) & 0XFF);
payload[X_PACKET_SPACE+2] = (char)((len >> 16) & 0XFF);
payload[X_PACKET_SPACE+1] = (char)((len >> 8) & 0XFF);
payload[X_PACKET_SPACE] = (char)((len >> 0) & 0XFF);
_out.write(payload);
似乎工作得很好,有点'oldsKewl'的做法 - 如果你们有更好的选择,我将不胜感激。
只是为了证实,它的工作方式就是这样。
答案 0 :(得分:1)
<强>解决强>
我是这样做的,这样我的服务器端就可以正确地从BB中恢复数据包。
OutputStream _out = conn.openOutputStream();
packet[3]= (byte)(9999 >>> 24);
packet[2]= (byte)(9999 >>> 16);
packet[1]= (byte)(9999 >>> 8);
packet[0]= (byte)(9999 >>> 0);
packet[8]= (byte)(60 >>> 24);
packet[7]= (byte)(60 >>> 16);
packet[6]= (byte)(60 >>> 8);
packet[5]= (byte)(60 >>> 0);
packet[13]= (byte)(4 >>> 24);
packet[12]= (byte)(4 >>> 16);
packet[11]= (byte)(4 >>> 8);
packet[10]= (byte)(4 >>> 0);
packet[18]= (byte)(_PIN >>> 24);
packet[17]= (byte)(_PIN >>> 16);
packet[16]= (byte)(_PIN >>> 8);
packet[15]= (byte)(_PIN >>> 0);
packet[23]= (byte)(1 >>> 24);
packet[22]= (byte)(1 >>> 16);
packet[21]= (byte)(1 >>> 8);
packet[20]= (byte)(1 >>> 0);
_out.write(packet,0,60);