最小化通过UDP传输数据的最有效方法是什么?

Tim*_* S. 4 java sockets encryption udp

我不是太多的比特和字节,所以如果这个问题是愚蠢的,我道歉.

我有一些套接字的经验,通常用于传输少量的纯文本.但是这次我必须传输更多我可以通过UDP分解的数据.

我正在开发一个游戏,其中服务器是用Java编写的,我想向客户端发送一组对象.由于我是一个webdeveloper,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
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

现在,我可以添加一个自定义分隔符来分割每个播放器的数据和另一个分隔符来分割数据.在我的光学中,最有效的方法之一是每行放置播放器的值,并在值之间放置预定义的字符序列.

884B0EAA2C7F16BA[|]some guy[|]0[|]0[|]0[|]0[|]0
AB61F7C2AAE0B488[|]some other guy[|]0[|]0[|]0[|]0[|]0
Run Code Online (Sandbox Code Playgroud)

虽然这对我有用,但仍然存在一些名称等安全风险.我几乎不能告诉客户端包含"[|]"的显示名称是非法的.

最小化传输数据的最有效方法是什么?

任何有关加密的其他信息将非常感谢!

W. *_*man 5

考虑使用Google Protocol Buffer.您可以定义消息(在.proto文件中),并以不同的编程语言为您生成代码.

生成的代码然后能够编码/解码您的消息,而无需您考虑如何编码数据.

编码的消息将非常小,并且编码/解码速度非常快.协议缓冲区真的很擅长.

网站上有一些很好的文档:https://developers.google.com/protocol-buffers/