diff --git a/TinyNet/TinyMessage.cpp b/TinyNet/TinyMessage.cpp index d73ffd4e..61f9e7a8 100644 --- a/TinyNet/TinyMessage.cpp +++ b/TinyNet/TinyMessage.cpp @@ -601,6 +601,7 @@ bool TinyController::Send(Message& _msg) // 附上自己的地址 msg.Src = Address; + // 附上序列号。响应消息保持序列号不变 if(!msg.Reply) msg.Seq = ++_Sequence; diff --git a/TokenNet/TokenMessage.cpp b/TokenNet/TokenMessage.cpp index 2cb59d02..181d9934 100644 --- a/TokenNet/TokenMessage.cpp +++ b/TokenNet/TokenMessage.cpp @@ -104,6 +104,18 @@ void TokenMessage::SetError(byte errorCode, const char* error, int errLength) } }*/ +// 创建当前消息对应的响应消息。设置序列号、标识位 +TokenMessage TokenMessage::CreateReply() const +{ + TokenMessage msg; + msg.Code = Code; + msg.Reply = true; + msg.Seq = Seq; + msg.State = State; + + return msg; +} + void TokenMessage::Show() const { #if MSG_DEBUG @@ -345,6 +357,7 @@ bool TokenController::OnReceive(Message& msg) return Controller::OnReceive(msg); } +static byte _Sequence = 0; // 发送消息,传输口参数为空时向所有传输口发送消息 bool TokenController::Send(Message& msg) { @@ -352,6 +365,11 @@ bool TokenController::Send(Message& msg) // 未登录,登录注册,握手可通过 //if(Token == 0&&!( msg.Code <= 0x2||msg.Code == 0x07)) return false; + //static byte _Sequence = 0; + auto& tmsg = (TokenMessage&)msg; + // 附上序列号。响应消息保持序列号不变 + if(!msg.Reply && tmsg.Seq == 0) tmsg.Seq = ++_Sequence; + if(msg.Reply) ShowMessage("Reply", msg); else diff --git a/TokenNet/TokenMessage.h b/TokenNet/TokenMessage.h index e8bcd799..c39d0932 100644 --- a/TokenNet/TokenMessage.h +++ b/TokenNet/TokenMessage.h @@ -42,6 +42,9 @@ public: //// 设置错误信息字符串 //void SetError(byte errorCode, const char* error, int errLength); + // 创建当前消息对应的响应消息。设置序列号、标识位 + TokenMessage CreateReply() const; + // 显示消息内容 virtual void Show() const; };