网络上可变数量的参数
variable number of arguments over network
我正在尝试使用boost asio库制作客户端服务器应用程序。首先,我设计了程序,以相同的模式和相同的长度发送请求和响应,即有一个分隔符字符,在每个参数之间,我把这个分隔符用于分隔参数,在服务器端,我根据分隔符参数解析传入流。问题是,随着程序的增长,我意识到在每个请求/响应上发送每个参数并不是一个好主意,因为有很多参数,根据请求/响应的类型,只有少数参数是必要的。所以我的问题是,什么样的设计可以很好地通过网络发送可变数量的参数?
您可以使用下面提到的消息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/
如果数据量很小,我不介意基于文本的解决方案。只写/读数据一个属性
(= name: + value)每行甚至可以使用xml。
相关文章:
- 如何反转整数参数包
- 我的神经网络不起作用 [XOR 问题]
- 使用C++库在Android项目中修改gradle中的cmake参数,用于插入指令的测试
- 如何使用默认参数等选择模板专业化
- 模板参数替换失败,并且未完成隐式转换
- 具有默认模板参数的多态类的模板推导失败
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 函数调用中参数的顺序重要吗
- 部分定义/别名模板模板参数
- 模板-模板参数推导:三个不同的编译器三种不同的行为
- 使用不带参数的函数访问结构元素
- 基于另一个成员参数将函数调用从类传递给它的一个成员
- 如何在OMNET++中指定与命令行参数组合的输出文件名
- 如何使用Luacneneneba API正确读取字符串和表参数
- 在派生函数中指定void*参数
- 视图中的参数推导失败:take_while
- static_assert在宏中,但也可以扩展到可以用作函数参数的东西
- 为什么 dlib 的神经网络 xml 导出包含的层参数与训练器指定的参数不同?
- 网络上可变数量的参数