Exemple #1
0
 void reciver_ReceiveCmd(object sender, QcCmdEventArgs e)
 {
     if (this.ReceivedCmd != null)
     {
         this.ReceivedCmd(this, e);
     }
 }
        void server_ReceiveCmd(object sender, QcCmdEventArgs e)
        {
            QcCmd  cmd  = e.Cmd;
            string from = e.Cmd.tokens(1);

            switch (cmd.CmdType)
            {
            case QcProtocol.QcCommand.QcUserLogin:

                bool blLogined = false;
                if (cmd.tokens(2) == User.Name)
                {
                    blLogined = true;
                    QcChanel chanel = new QcChanel();

                    chanel.SetChanel(e.Chanel, server);

                    if (lstUser.ContainsKey(from))
                    {
                        lstUser[from].Chanel = chanel;
                        if (this.Logined != null)
                        {
                            var userfrom = lstUser[from];
                            var evtarg   = new QcMessagerLoginEventArg(userfrom);
                            this.Logined(this, evtarg);
                        }
                    }
                }

                QcClientService qcs = e.Chanel as QcClientService;
                e.Chanel.Send(QcCmd.MakeCmd(QcProtocol.QcCommand.QcLoginReplay, blLogined));
                if (blLogined && from != User.Name)
                {
                    e.Chanel.Send(QcCmd.MakeCmd(QcProtocol.QcCommand.QcUserLogin, User.Name, from));
                }

                break;
            }
        }
        void serverchanel_ReceivedCmd(object sender, QcCmdEventArgs e)
        {
            // 这是登录服务器,首次登陆,没有创建连接对象
            if (lstUser.ContainsKey(e.Cmd.tokens(1)) == false)
            {
                return;
            }
            var userfrom = lstUser[e.Cmd.tokens(1)];

            if (userfrom == null)
            {
                return;
            }
            switch (e.Cmd.CmdType)
            {
            case QcProtocol.QcCommand.QcMsg:
                if (this.ReciveMsg != null)
                {
                    var msgevtarg = new QcMessagerMsgEventArg(e.Cmd.tokens(1), e.Cmd.tokens(3), e.Cmd.tokens(4));
                    this.ReciveMsg(this, msgevtarg);
                }
                break;

            case QcProtocol.QcCommand.QcLoginReplay:
                break;

            case QcProtocol.QcCommand.QcLoginOut:

                if (this.Loginout != null)
                {
                    var evt = new QcMessagerLoginEventArg(userfrom);
                    this.Loginout(this, evt);
                }
                userfrom.Close();
                break;

            case QcProtocol.QcCommand.QcUserLogin:
                if (sender == serverchanel)
                {
                    return;
                }
                if (userfrom.Name == User.Name)
                {
                    return;
                }
                bool blLogined = false;
                if (e.Cmd.tokens(2) == User.Name)
                {
                    blLogined = true;
                    if (this.Logined != null)
                    {
                        var evtarg = new QcMessagerLoginEventArg(userfrom);
                        this.Logined(this, evtarg);
                    }
                }
                e.Chanel.Send(QcCmd.MakeCmd(QcProtocol.QcCommand.QcLoginReplay, blLogined));
                break;
            }
            if (this.ReciveCmd != null)
            {
                var cmdevt = new QcMessagerCmdEventArg()
                {
                    cmd = e.Cmd, user = userfrom
                };
                this.ReciveCmd(this, cmdevt);
            }
        }