예제 #1
0
        private string MakeLoginMessage(LoginFailedEventArgs loginFailedEventArgs)
        {
            string message = loginFailedEventArgs.Message;
            if (string.IsNullOrEmpty(message))
            {
                switch (loginFailedEventArgs.Code)
                {
                    case LoginCallbackCode.IM_LOGINFAIL_NETWORK:
                        message = "登录超时";
                        goto Label_00C3;

                    case LoginCallbackCode.IM_LOGINFAIL_SERVER_REFUSE:
                        message = "密码错误,服务器拒绝";
                        goto Label_00C3;

                    case LoginCallbackCode.IM_LOGINFAIL_VERSION_OVERDUE:
                        message = "客户端版本过期";
                        goto Label_00C3;

                    case LoginCallbackCode.IM_LOGINFAIL_SERVER_MAINTENANCE:
                        message = "服务器正在维护";
                        goto Label_00C3;

                    case LoginCallbackCode.IM_LOGINFAIL_SERVER_BUSY:
                        message = "服务器忙";
                        goto Label_00C3;

                    case LoginCallbackCode.IM_LOGINFAIL_FORCE_NEWCRYPT:
                        message = "服务器要求使用新加密方法登录";
                        goto Label_00C3;

                    case LoginCallbackCode.IM_LOGINFAIL_CANCEL:
                        message = "用户取消登录";
                        goto Label_00C3;

                    case LoginCallbackCode.IM_LOGINFAIL_OTHER:
                        message = "发生未知错误";
                        goto Label_00C3;

                    case LoginCallbackCode.IM_LOGINFAIL_EXISTSAMEAPP:
                        message = string.Format("您已登录{0},不能重复登录。", this.accounts.Text);
                        goto Label_00C3;

                    case LoginCallbackCode.IM_LOGINFAIL_PWD_EXPIRE1:
                        message = "密码过期";
                        goto Label_00C3;

                    case LoginCallbackCode.IM_LOGINFAIL_PWD_EXPIRE2:
                        message = "密码过期";
                        goto Label_00C3;
                }
                message = "发生未知错误";
            }
        Label_00C3:
            return string.Format("{0}\n\n错误码: {1}", message, (int)loginFailedEventArgs.Code);
        }
예제 #2
0
        private void HandleLogonResponse2(ParseData data)
        {
            DataReader dr = new DataReader(data.Data);
            int success = dr.ReadInt32();
            if (success == 0)
            {
                OnLoginSucceeded(BaseEventArgs.GetEmpty(data));
                Product product = Product.GetByProductCode(m_settings.Client);
                if (product.UsesUdpPing)
                {
                    BncsPacket pck = new BncsPacket((byte)BncsPacketId.UdpPingResponse);
                    pck.InsertDwordString("bnet");
                    Send(pck);
                }

                EnterChat();
            }
            else
            {
                LoginFailureReason reason = LoginFailureReason.Unknown;
                switch (success)
                {
                    case 1: // account DNE
                        reason = LoginFailureReason.AccountDoesNotExist; break;
                    case 2: // invalid password
                        reason = LoginFailureReason.InvalidAccountOrPassword; break;
                    case 6: // account closed
                        reason = LoginFailureReason.AccountClosed; break;
                }
                LoginFailedEventArgs args = new LoginFailedEventArgs(reason, success, dr.ReadCString()) { EventData = data };
                OnLoginFailed(args);
            }
        }
 public void OnLoginFailed(LoginFailedEventArgs e)
 {
     m_host.OnLoginFailed(e);
 }
예제 #4
0
        private void HandleLogonResponse(ParseData data)
        {
            DataReader dr = new DataReader(data.Data);
            int status = dr.ReadInt32();
            if (status == 1)
            {
                OnLoginSucceeded(BaseEventArgs.GetEmpty(data));
                Product product = Product.GetByProductCode(m_settings.Client);
                if (product.UsesUdpPing)
                {
                    BncsPacket pck = new BncsPacket((byte)BncsPacketId.UdpPingResponse);
                    pck.InsertDwordString("bnet");
                    Send(pck);
                }

                EnterChat();
            }
            else
            {
                LoginFailedEventArgs args = new LoginFailedEventArgs(LoginFailureReason.InvalidAccountOrPassword, status) { EventData = data };
                OnLoginFailed(args);
            }
        }