网络编程协议设计与protobuf反射

1. 问题

  1. 最近在想tcp连接传输信息中应用层协议如何设计, 普遍的有两种: 加结束符和加头部信息,能不能不加头部信息?..貌似不行

2. 协议头

  1. 协议头必备的两个元素就是长度len, 类型type, 假设占8字节,在客户端和数据封装到一块,发送到服务端,服务端每次先接受8字节,获得类型和长度后,在读取len字节, 根据类型处理.

3. protobuf反射机制

  1. protobuf能方便定义传输数据并序列化反序列化, 但还是需要自己加协议头,偶然看到muduo作者陈硕大佬对pootobuf反射机制的博客,本以为不需要协议头了,看完发现还是需要,博客地址: protobuf反射机制. 不过也了解了这个反射机制
  2. 就是能通过"类名"自动推导出类,比如一个User消息格式,可以通过如下方法获得反序列化User对象
    	Message* mess=get_by_name("User");	// 这只是个举例,并不是调用这个函数,具体请看上面陈硕的博客
    
  3. 陈硕大佬的处理方案是: 封装协议头,协议头里"类型"元素由"类名"取代, 这样的话解析协议头获得类名,然后根据类名获得对象,再进行处理
  4. 我个人认为这个解决了自己定义类型可能会重复的问题,自己定义类型可以用typeid或者string, 但不同人可能定义相同的typeid,用string的话可以避免重名,但每次添加新类型也要更新类型种类表,稍显麻烦,除此之外…这个反射机制好像没什么用…粗鄙之见,有什么更好的用处欢迎指教.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值