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


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

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

tcp 网络传输协议

扫把灰常牛B 9 years, 10 months ago

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

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

tesaaa answered 9 years, 10 months ago

Your Answer