0

我正在尝试使用 boost asio 库制作客户端服务器应用程序。起初我设计了程序以相同的模式和相同的长度发送请求和响应,即有一个分隔符,在每个参数之间我把这个分隔符用来分隔参数,在服务器端我根据分隔符解析传入的流范围。问题是随着程序的增长,我意识到在每个请求/响应上发送每个参数并不是一个好主意,因为有很多参数,根据请求/响应的类型,只有少数是必需的。所以我的问题是,什么样的设计可以通过网络发送可变数量的参数?

4

2 回答 2

3

您可以使用消息 ID 创建消息层次结构,如下所述。

struct Msg{
    int msg_id;
    type t1;
    type t2;
}

struct init_Msg : public Msg{
   type init_param;
}

struct inti end_Msg : public Msg{
   type end_param;
}

然后,您可以在客户端创建带有消息 ID 的特定消息。序列化它并通过网络发送到服务器。在服务器端,您可以对其进行反序列化,并可以使用消息 id 来识别消息的类型。要序列化数据,您可以使用名为 protobuf 的第三方库。查看https://code.google.com/p/protobuf/

于 2013-06-10T15:02:36.187 回答
1

If the data size is small I wouldn't mind a text based solution. Just write/read the data one property
(= name: + value) each line. Maybe even use xml. There are libraries to read/write that.

于 2013-06-10T14:52:27.757 回答