sockets - Java Blackberry发送定制数据包

标签 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;  
(*(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”的做法-因此,如果您有更好的选择,我将不胜感激。

只是为了确认,它是通过这种方式工作的。

最佳答案

已解决

这是我的操作方法,以便我的服务器端可以正确接收来自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);

关于sockets - Java Blackberry发送定制数据包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7621462/

相关文章:

Blackberry:为什么用不同的 y 调用 ListField 和 KeywordFilterField 的 drawListRow()

.net - UdpClient.CancelReceive 在哪里?

Java:同步套接字输入

c++ - 绑定(bind)服务器套接字时出现 WSA 错误 10048

c - 如何通知 netdev 队列可以再次接收数据包

c++ - 黑莓10截图错误

linux - 关闭连接后如何保持套接字可见?

azure - 无法使用专用终结点将 Azure Function 与 Azure SQL 连接

接收TCP数据流的C程序

java - 从 BlackBerry java 应用程序返回字符串