Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sockets Java Blackberry发送定制包_Sockets_Networking_Blackberry_Java Me - Fatal编程技术网

Sockets Java Blackberry发送定制包

Sockets Java Blackberry发送定制包,sockets,networking,blackberry,java-me,Sockets,Networking,Blackberry,Java Me,我需要在Java for 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; (

我需要在Java for 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);    
看起来很好,有点像“Oldskowl”的方式-所以如果你们有更好的选择,我会很感激


只是确认一下,它是这样工作的。

已解决

下面是我如何做到的,这样我的服务器端就可以正确地从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);

为了维护类型安全,C代码使用了reinterpret转换,这是Java明确不允许的。对于这种类型的网络代码,您的位移位和掩蔽是我所期望的。