高手进,关于java用udp向服务端传送数据

无法无天 2010-07-27 04:22:43
我要用UDP向服务器传送数据,, 具体传送数据包括以下, 它只是给了一个关于C的数据类型

PACKED struct Packet

{
byte quest; // 第一个字节
uint64 time:
uint32 lon;
uint32 lat;
uint32 imsi_len;
char imsi[15]

}

以上是给的数据类型,要求必须严格按照相关类型所占的字节数据来传递
我现在假设有如下数据; String imsi="123456789123456"
quest = 0x21
time= 123456
lon = 456.5
lat= 45.6
imsi_len= 15
imsi[15] =imsi


我的java代码如下写


byte first = 0x21;
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(baos);

oos.writeByte(first);// 添加第一个字节 (文件类别)

oos.writeLong(_location.getTime());


oos.writeInt((int) (lon ));
oos.writeInt((int) (lat));

oos.writeInt(IMSI.length()); // IMSI的长度String 460030900191125

oos.writeChars(IMSI);// chars

oos.close();

byte[] t = baos.toByteArray();



高手帮忙看一下,那儿不对啊? 帮忙看一下。





...全文
66 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
无法无天 2010-07-28
  • 打赏
  • 举报
回复
PACKED struct Packet

{
byte quest; // 第一个字节
uint64 time:
uint32 lon;
uint32 lat;
uint32 imsi_len;
char imsi[15]

}

主要是这里的 char imsi[15] 这里C语言中的定义

如果我在java中得到的值为 String imsi="123456789123456";
用ObjectOutputStream dos=new ObjectOutputStream()的话,

怎么把这个 imsi 写入到输出流中 才可以和C语言中的相对应上?

dos.write(imsi.getBytes()) ?

dos.writeChars(imsi) ?

这两种写法都不对,那该怎么写?

谢谢!
ccll_4177 2010-07-28
  • 打赏
  • 举报
回复
LZ能不能不这么问问题,应该是你告诉我们哪不对,或者是有什么疑惑,这个又不是面试,何况你贴这么短,我怎么知道你到底是卡在哪出问题了?

80,492

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧