go protocolbuffer 如何区分客户端来自哪条数据包

firefly · · 1674 次点击 · 开始浏览    置顶
这是一个创建于 的主题,其中的信息可能已经有所发展或是发生改变。

我定义了两个数据包 message S2SSystem { message LoginInfo{ required string name = 1; required string passworld = 2; } message RegisterInfo { required string name = 1; required string passworld = 2; required int32 age = 3; required int32 sex = 4; } } //注册 register := new(protocol.S2SSystem_RegisterInfo) if err := proto.Unmarshal(buf[0:n], register); err == nil { err := account.Register(register) result := new(protocol.S2SSystem_ResultInfo) if err == nil { buff := int32(global.SUCCESS) result.Result = &buff global.Log.Trace("%s register success") } } //登陆 login := new(protocol.S2SSystem_LoginInfo) if err := proto.Unmarshal(buf[0:n], login); err == nil { fmt.Println(login.GetName(), login.GetPassworld()) login_result := account.Login(login) result := new(protocol.S2SSystem_ResultInfo) buff := int32(login_result) result.Result = &buff global.Log.Trace("%s login rsult %d", login.GetName(), login_result) encObj, _ := proto.Marshal(result) conn.Write(encObj) } 我通过proto.Unmarshal 解析判断返回是否为nil区别不同的数据包,但是有个问题,当两个数据包结构中有一个包含另外的数据包的结构时候是能够赋值成功的,我传递 register 数据包,由于 login中包含name ,passworld 所以每次都要进来,请问有没有更好的区分不同的包数据!Thanks

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1674 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传