【问题标题】:Android real time game byte message transferAndroid实时游戏字节消息传输
【发布时间】:2017-05-25 06:46:42
【问题描述】:

我正在开发自己的游戏,并使用 google play 游戏服务来添加多人游戏功能。

我的数据信息传输有问题。消息对象默认为byte[],可以很方便的传递int、char等对象,并将它们转换回去。

我的问题是转移我创建的对象。

工作示例:

发送数据时:

 int a = 0;
 mMsgBuf[0] = (byte) a;

接收时:

int a = (int) mMsgBuf[0];

现在我想发送我的对象,但我需要将他转移到一个字节(不是字节数组),并将他放入 mMsgBuf[X]。

我该怎么做?

编辑 将对象转换为字节[]很容易,但是消息传输一个字节[]。 我正在咨询如何用我的 objectbyte[] 传输消息(我们知道 - byte[]),也许合并两个数组?

【问题讨论】:

  • @Vyacheslav - 它不是重复我的朋友,请查看编辑更新。
  • easy to convert object to byte[], but The messages transfer is a byte[]. ???如果您必须发送一个字节数组并且您可以将您的对象转换为字节数组,那么问题是什么?不清楚您的问题是什么。
  • 将整数压缩为字节的方式仅适用于
  • In default the message object is byte[], 。所以这将是一个字节数组。每条消息有多少字节?试图理解你的帖子,在我看来你只能发送一个字节长的消息。请详细说明。

标签: java android google-play-services google-play-games


【解决方案1】:

如果不是,请让您的自定义对象可序列化。 Implement Serializable Interface。 然后在对象和字节数组之间进行转换以传输或接收数据。

对象到字节[]:

ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutput out = new ObjectOutputStream(bos);
out.writeObject(yourObject);
byte[] yourBytes = bos.toByteArray();

byte[] 到对象:

ByteArrayIntputSream bis = new ByteArrayInputStream(yourBytes);
ObjectInput in = new ObjectInputStream(bis);
Object o = in.readObject();

【讨论】:

  • 谢谢!但是消息是字节[],我无法在消息中输入字节[]。请看我编辑的问题。
  • @Idon89 将字节数组复制到您的消息缓冲区,这也是一个字节数组。你可以做mMsgBuf = convertedBytes.ToArray()。没有?
  • @Idon89 我认为您误解了基本的 java 字节和字节数组概念。查看一些教程以了解如何操作数组。
  • 我明白,我的英语不太好,所以我有一些拼写错误。您给我的字节转换器仅适用于 java 对象(int、string、string[]....)。但是我创建了一个我的新对象,它不适用于他。
  • 您的对象应该是可序列化的,以便处理编组。请参阅上面的编辑答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多