我定义了两个数据包
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
有疑问加站长微信联系(非本文作者)