C/S即时通讯软件的数据传输格式

发布于 2022-08-29 18:04:17 字数 226 浏览 12 评论 0

正在写一个小型即时通讯软件,使用TCP协议在服务器和客户端之间传输数据,在数据的格式上遇到一些问题。传输的数据中需要包含请求的操作(例如获取好友列表、发送消息),还需要包含操作所需的一些参数(例如获取好友列表需要提供自己的username)。

现在遇到的问题是,如何把需要传输的内容组织起来一并发送到服务器?之前想过用序列化和JSON但是发现工作量会变大很多,想知道这种情况的通常做法是什么?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(7

唯憾梦倾城 2022-09-05 18:04:17

我觉得 JSON 确实是个很好的方案,无论什么语言,应该都有好用的 JSON 库,或者也可以考虑 XML 这种结构。

选择数据格式的话,最好选择「流式」格式,例如 JSON 和 XML 都算流式的,不必关心一个数据包的起止边界。否则的话还要自己想办法区分边界,因为一条数据超过 MTU 的话要拆分,而 TCP 又会粘包导致多个包合并。

苯莒 2022-09-05 18:04:17

用protobuf

长安忆 2022-09-05 18:04:17

XML的解决方案是冗余字节太多了,效率也不是最高的。这样的开闭结构比数据本身都要多……
JSON不错,明文,易懂,易查错。蛮中庸的。
PROTOC BUFFER是GOOGLE的,会序列化为字节流,不易读(都是二级制),但网络传输的数据包最小,效率也高(具体取决于你用哪个语言,不同语言的不同包效率不一样,不过几个主流的测试,都是占优的)。刚上手会有些小问题,比JSON上手难。

離人涙 2022-09-05 18:04:17

用thrift呗。。。管什么格式呢,管什么网络协议,都给你弄好了。。。

机场等船 2022-09-05 18:04:17

我也觉得json和xml,json要比较好

新一帅帅 2022-09-05 18:04:17

用什么格式传输,跟你要传输的数据有关系。如果只是获取好友信息之类的,不需要保密的数据,可以用json,甚至xml,多语言通信,也可以用thrift。如果数据安全级别比较高的话,就要考虑封包格式和加密之类的事情了。

话说为什么不用B/S,而非要用C/S?C/S的Server做分布式的成本远高于B/S的Web端做负载均衡的成本高啊!

痕至 2022-09-05 18:04:17

以结构体的方式

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文