【问题标题】:variable number of arguments over network网络上可变数量的参数
【发布时间】:2013-06-12 04:11:29
【问题描述】:

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

【问题讨论】:

    标签: c++ network-programming boost-asio


    【解决方案1】:

    您可以使用下面提到的消息 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/

    【讨论】:

      【解决方案2】:

      如果数据量很小,我不介意基于文本的解决方案。 只需写入/读取数据一个属性
      (= 名称:+ 值)每一行。 甚至可能使用 xml。有图书馆可以读/写。

      【讨论】:

      • 你知道这些库的名字吗?
      猜你喜欢
      • 2017-08-04
      • 1970-01-01
      • 1970-01-01
      • 2021-08-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-15
      相关资源
      最近更新 更多