Пример #1
0
        /// <summary>
        /// 调用序列化数据:客户端将消息体序列化成字符串发送给服务器
        /// </summary>
        public byte[] SerializeMsg(Message msg)
        {
            BinaryStream bs = new BinaryStream();
            bs.DeconstructMessage();
            int nMsgCount = 1;
            bs.Write(nMsgCount);

            msg.DeconstructObj();
            byte[] msgData = msg.GetWriteBuffer();
            bs.Write(msgData);

            byte[] bySend = bs.GetWriteBuffer();

            return bySend;
        }
Пример #2
0
        // 子线程调用
        public void ParseAndAddMsg(long lSessionId)
        {
            lock (mSendLocker)
            {
                BinaryStream bs = new BinaryStream();
                bs.DeconstructMessage();
                int nMsgCount = mSendMsgs.Count;
                bs.Write(nMsgCount);
                for (int i = 0; i < nMsgCount; ++i)
                {
                    Message msg = mSendMsgs.Dequeue();
                    msg.DeconstructObj();
                    bs.Write(msg.GetWriteBuffer());
                }

                RespondObj resObj = new RespondObj();
                resObj.SessionId = lSessionId;
                resObj.RespondString = Convert.ToBase64String(bs.GetWriteBuffer());
                // 加入到待发送列表即可
                MsgHandler.GetIns().AddRespondMsg(resObj);
            }
        }