[英]What is the most effective way to minimize data for transfer over UDP?
我没有太多的细节,所以我很抱歉这个问题很愚蠢。
我对套接字有一些经验,通常用于传输少量的纯文本。 但是这次,我必须传输更多的数据,以便能够通过UDP进行分解。
我正在开发一个游戏,其中的服务器是用Java编写的,我想将对象数组发送给客户端。 由于我是一名Web开发人员,因此JSON是传输数据时弹出的第一件事,尽管我高度怀疑这是联网中最有效的方法。
如果是JSON:
{
"players": [
{
"id": "884B0EAA2C7F16BA", // hex string
"name": "some guy", // string
"x": 0, // double
"y": 0, // double
"xv": 0, // double
"yv": 0, // double
"angle": 0, // double
}, {
"id": "AB61F7C2AAE0B488", // hex string
"name": "some other guy", // string
"x": 0, // double
"y": 0, // double
"xv": 0, // double
"yv": 0, // double
"angle": 0, // double
}
]
}
现在,我可以添加一个自定义分隔符以按玩家分割数据,并添加另一个分隔符以分割数据。 在我的光学系统中,最有效的方法之一是每行放置播放器的值,并在这些值之间放置预定义的字符序列。
884B0EAA2C7F16BA[|]some guy[|]0[|]0[|]0[|]0[|]0
AB61F7C2AAE0B488[|]some other guy[|]0[|]0[|]0[|]0[|]0
尽管这对我有用,但名称等仍存在一些安全隐患。 我很难告诉客户包含“ [|]”的显示名称是非法的。
最小化传输数据的最有效方法是什么?
任何有关加密的其他信息将不胜感激!
考虑使用Google协议缓冲区。 您定义一条消息(在.proto文件中),它会以不同的编程语言为您生成代码。
这样,生成的代码便能够对消息进行编码/解码,而无需您考虑数据的编码方式。
编码的消息将非常小,并且编码/解码非常快。 协议缓冲区确实擅长于此。
网站上有一些很好的文档: https : //developers.google.com/protocol-buffers/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.