[英]Generalizing for_each over a tuple to accept a variable number of arguments
[英]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/
如果数据量很小,我不会介意基于文本的解决方案。 只需写入/读取数据的一个属性
(=名称:+值)每行。 甚至可以使用xml。 有可以读取/写入的库。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.