我一直在寻找一个解决方案,为此一小会儿,而不是我发现相当匹配的东西。 C#有一个内置的序列化库,但这不是我所期望的。我需要序列化对象,以便可以将它们序列化,并将头数据附加到数据包即。 ID号,时间戳,对象类型等,然后能够发送出去,而不必记住我发送给它的平台。换句话说,我应该能够用C++或Java解开我的数据包,而不用比我投入的对象类型和头数据的顺序更多的知识。 C#中的二进制格式化程序会产生一个问题,因为它被设计为使用相同的库在另一端进行反序列化。它还会产生我不想处理的臃肿数据包。我宁愿格式化我的数据包。字节转换的确切对象,类似于C#中的memcpy
| ======== | ======== | ========= | === | ===== ========= |
| packetID |数据类型| timeStamp | etc | serializedObject |
| ======== | ======== | ========= | === | ============= = |
如果我有权访问memcpy的某些内容以实现此目的,那将会很好,因为只要对象的数据类型顺序被反序列化为匹配(是的,假设其他语言具有相同的字节大小的数据类型),很容易从一个新的平台上抓取来自服务器的数据(比如我想抓取Android(Java)或iPhone(obj。C)的数据),而且很少麻烦
为什么不使用XML或JSON? – svick
我对使用XML的理解是,它增加了大量的数据包膨胀。由于服务器充当中央集线器,在服务器执行其他任务时将大量数据包提供给大量设备可能会迅速产生大量拥塞。这是一个很好的解决方案,但是我会用一台很老的机器来运行它,所以即使是一些客户也可以为它做很多工作。 –
你也可以使用BSON或protobuf-net ... –