//HandleResult OnPointerDataReceive(IntPtr connId, IntPtr pData, int length)
    //{
    //    // 数据到达了
    //    try
    //    {
    //        if (m_tcpServer.Send(connId, pData, length))
    //        {
    //            return HandleResult.Ok;
    //        }

    //        return HandleResult.Error;
    //    }
    //    catch (Exception)
    //    {
    //        return HandleResult.Ignore;
    //    }
    //}

    HandleResult OnReceive(IntPtr connId, byte[] bytes)
    {
        try
        {
            string text = Encoding.UTF8.GetString(bytes, 0, bytes.Length);
            LogUtil.getInstance().addDebugLog("收到客户端原始消息:" + text);
            {
                text = m_endStr + text;
                text = text.Replace("\r\n", "");

                List <string> list = new List <string>();
                bool          b    = CommonUtil.splitStrIsPerfect(text, list, m_packFlag);

                if (b)
                {
                    for (int i = 0; i < list.Count; i++)
                    {
                        ReceiveObj obj = new ReceiveObj(connId, list[i]);

                        Task t = new Task(() => { doAskCilentReq(obj); });
                        t.Start();

                        //Thread thread = new Thread(doAskCilentReq);
                        //thread.Start(obj);
                    }

                    //text = "";
                    m_endStr = "";
                }
                else
                {
                    for (int i = 0; i < list.Count - 1; i++)
                    {
                        ReceiveObj obj = new ReceiveObj(connId, list[i]);

                        Task t = new Task(() => { doAskCilentReq(obj); });
                        t.Start();

                        //Thread thread = new Thread(doAskCilentReq);
                        //thread.Start(obj);
                    }

                    m_endStr = list[list.Count - 1];
                }
            }
        }
        catch (Exception ex)
        {
            LogUtil.getInstance().addErrorLog("OnReceive:" + ex.Message);
        }

        return(HandleResult.Ok);
    }
    // 处理客户端的请求
    void doAskCilentReq(object obj)
    {
        ReceiveObj receiveObj = (ReceiveObj)obj;
        string     text       = receiveObj.m_data;

        // 日志
        {
            PlayerData playerData = GameUtil.getPlayerDataByConnId(receiveObj.m_connId);
            if (playerData != null)
            {
                RoomData room = GameUtil.getRoomByUid(playerData.m_uid);
                if (room != null)
                {
                    LogUtil.getInstance().writeRoomLog(room, "收到客户端消息:" + text);
                }
                else
                {
                    LogUtil.getInstance().addDebugLog("收到客户端消息:" + text);
                }
            }
            else
            {
                LogUtil.getInstance().addDebugLog("收到客户端消息:" + text);
            }
        }

        JObject jo;

        try
        {
            jo = JObject.Parse(text);
        }
        catch (JsonReaderException ex)
        {
            // 传过来的数据不是json格式的,一律不理
            // 日志
            {
                PlayerData playerData = GameUtil.getPlayerDataByConnId(receiveObj.m_connId);
                if (playerData != null)
                {
                    RoomData room = GameUtil.getRoomByUid(playerData.m_uid);
                    if (room != null)
                    {
                        LogUtil.getInstance().writeRoomLog(room, "客户端传来非json数据:" + text);
                    }
                    else
                    {
                        LogUtil.getInstance().addDebugLog("客户端传来非json数据:" + text);
                    }
                }
                else
                {
                    LogUtil.getInstance().addDebugLog("客户端传来非json数据:" + text);
                }
            }

            m_endStr = "";

            return;
        }

        if (jo.GetValue("tag") != null)
        {
            string tag = jo.GetValue("tag").ToString();

            // 休闲场相关
            if (tag.CompareTo(TLJCommon.Consts.Tag_XiuXianChang) == 0)
            {
                PlayLogic_Relax.getInstance().OnReceive(receiveObj.m_connId, text);
            }
            // 比赛场相关
            else if (tag.CompareTo(TLJCommon.Consts.Tag_JingJiChang) == 0)
            {
                PlayLogic_PVP.getInstance().OnReceive(receiveObj.m_connId, text);
            }
            // 获取pvp场次信息
            else if (tag.CompareTo(TLJCommon.Consts.Tag_GetPVPGameRoom) == 0)
            {
                NetRespond_GetPVPGameRoom.doAskCilentReq_GetPVPGameRoom(receiveObj.m_connId, text);
            }
            // 请求服务器在线玩家信息接口
            else if (tag.CompareTo(TLJCommon.Consts.Tag_OnlineInfo) == 0)
            {
                NetRespond_OnlineInfo.doAskCilentReq_OnlineInfo(receiveObj.m_connId, text);
            }
            // 使用buff
            else if (tag.CompareTo(TLJCommon.Consts.Tag_UseBuff) == 0)
            {
                NetRespond_UseBuff.doAskCilentReq_UseBuff(receiveObj.m_connId, text);
            }
            // 是否已经加入游戏
            else if (tag.CompareTo(TLJCommon.Consts.Tag_IsJoinGame) == 0)
            {
                NetRespond_IsJoinGame.doAskCilentReq_IsJoinGame(receiveObj.m_connId, text);
            }
            // 请求恢复房间
            else if (tag.CompareTo(TLJCommon.Consts.Tag_RetryJoinGame) == 0)
            {
                NetRespond_RetryJoinGame.doAskCilentReq_RetryJoinGame(receiveObj.m_connId, text);
            }
            // 自定义牌型
            else if (tag.CompareTo(TLJCommon.Consts.Tag_DebugSetPoker) == 0)
            {
                NetRespond_DebugSetPoker.doAskCilentReq_DebugSetPoker(receiveObj.m_connId, text);
            }
            // 心跳
            else if (tag.CompareTo(TLJCommon.Consts.Tag_HeartBeat_Play) == 0)
            {
                NetRespond_HeartBeat_Play.doAskCilentReq_HeartBeat_Play(receiveObj.m_connId, text);
            }
            // 解散房间
            else if (tag.CompareTo(TLJCommon.Consts.Tag_BreakRoom) == 0)
            {
                NetRespond_BreakRoom.doAskCilentReq_BreakRoom(receiveObj.m_connId, text);
            }
            // 斗地主相关
            else if (tag.CompareTo(TLJCommon.Consts.Tag_DouDiZhu_Game) == 0)
            {
                PlayLogic_DDZ.getInstance().OnReceive(receiveObj.m_connId, text);
            }
            // 未知Tag
            else
            {
                LogUtil.getInstance().addDebugLog("未知Tag:" + tag);
            }
        }
        else
        {
            // 传过来的数据没有tag字段的,一律不理
            // 日志
            {
                PlayerData playerData = GameUtil.getPlayerDataByConnId(receiveObj.m_connId);
                if (playerData != null)
                {
                    RoomData room = GameUtil.getRoomByUid(playerData.m_uid);
                    if (room != null)
                    {
                        LogUtil.getInstance().writeRoomLog(room, "客户端传来的数据没有Tag:" + text);
                    }
                    else
                    {
                        LogUtil.getInstance().addDebugLog("客户端传来的数据没有Tag:" + text);
                    }
                }
                else
                {
                    LogUtil.getInstance().addDebugLog("客户端传来的数据没有Tag:" + text);
                }
            }
            return;
        }
    }
    //HandleResult OnPointerDataReceive(IntPtr connId, IntPtr pData, int length)
    //{
    //    // 数据到达了
    //    try
    //    {
    //        if (m_tcpServer.Send(connId, pData, length))
    //        {
    //            return HandleResult.Ok;
    //        }

    //        return HandleResult.Error;
    //    }
    //    catch (Exception)
    //    {
    //        return HandleResult.Ignore;
    //    }
    //}

    HandleResult OnReceive(IntPtr connId, byte[] bytes)
    {
        try
        {
            string text = Encoding.UTF8.GetString(bytes, 0, bytes.Length);

            // 日志
            {
                PlayerData playerData = GameUtil.getPlayerDataByConnId(connId);
                if (playerData != null)
                {
                    RoomData room = GameUtil.getRoomByUid(playerData.m_uid);
                    if (room != null)
                    {
                        LogUtil.getInstance().writeRoomLog(room, "收到客户端原始消息:" + text);
                    }
                    else
                    {
                        LogUtil.getInstance().addDebugLog("收到客户端原始消息:" + text);
                    }
                }
                else
                {
                    LogUtil.getInstance().addDebugLog("收到客户端原始消息:" + text);
                }
            }

            {
                text = m_endStr + text;
                text = text.Replace("\r\n", "");

                List <string> list = new List <string>();
                bool          b    = CommonUtil.splitStrIsPerfect(text, list, m_packEndFlag);

                if (b)
                {
                    for (int i = 0; i < list.Count; i++)
                    {
                        ReceiveObj obj = new ReceiveObj(connId, list[i]);
                        //Thread thread = new Thread(doAskCilentReq);
                        //thread.Start(obj);

                        Task t = new Task(() => { doAskCilentReq(obj); });
                        t.Start();
                    }

                    //text = "";
                    m_endStr = "";
                }
                else
                {
                    for (int i = 0; i < list.Count - 1; i++)
                    {
                        ReceiveObj obj = new ReceiveObj(connId, list[i]);
                        //Thread thread = new Thread(doAskCilentReq);
                        //thread.Start(obj);

                        Task t = new Task(() => { doAskCilentReq(obj); });
                        t.Start();
                    }

                    m_endStr = list[list.Count - 1];
                }
            }
        }
        catch (Exception ex)
        {
            TLJ_PlayService.PlayService.log.Error("OnReceive:" + ex.Message);
        }

        return(HandleResult.Ok);
    }
Example #4
0
 static void OnError(object s, ReceiveObj e)
 {
     Console.WriteLine("Error: " + e.message);
 }
Example #5
0
 static void OnReceive(object s, ReceiveObj e)
 {
     Console.WriteLine("Бот:");
     Console.WriteLine(e.message);
 }
Example #6
0
        static void OnReceive(object s, ReceiveObj e)
        {
            User u;

            try
            {
                //этот пользователь уже есть в списке?
                u = Users.Where(c => c.socket == e.socket).First();

                //если уже есть:
                string message = e.message;
                message = message.ToUpper();

                //строка с ответом
                string answer = "";

                //валидность команды
                bool valid = false;

                if (message.Contains("СПИСОК КЛИЕНТОВ"))
                {
                    valid = true;
                    foreach (User c in Users)
                    {
                        answer += c.name + " online=" + ServerObj.IsConnected(c.socket) + Environment.NewLine;
                    }
                }

                if (message.Contains("КАК ДЕЛА"))
                {
                    valid   = true;
                    answer += "Хорошо." + Environment.NewLine;
                }

                if (message.Contains("КОТОРЫЙ ЧАС"))
                {
                    valid   = true;
                    answer += "Сейчас: " + DateTime.Now.ToShortTimeString() + Environment.NewLine;
                }

                if (message == "ПОКА")
                {
                    valid   = true;
                    answer += "Досвидания." + Environment.NewLine;
                }

                //если команда не опознана, напомнить список доступных
                if (!valid)
                {
                    answer = commandString;
                }
                ServerObj.Send(e.socket, answer);
            }
            catch
            {
                //первый ответ пользователя = его имя
                u        = new User();
                u.socket = e.socket;
                u.name   = e.message;
                Users.Add(u);
                ServerObj.Send(e.socket, $"Здравствуйте {u.name}" + Environment.NewLine + commandString);
            }

            Console.WriteLine(e.socket.RemoteEndPoint.ToString() + " Mssage: " + e.message);
        }
Example #7
0
 static void OnError(object s, ReceiveObj e)
 {
     Console.WriteLine(e.socket.RemoteEndPoint.ToString() + " Error: " + e.message);
 }
    // 处理客户端的请求
    void doAskCilentReq(object obj)
    {
        // 模拟耗时操作,比如数据库操作,IO操作
        // Thread.Sleep(3000);

        ReceiveObj receiveObj = (ReceiveObj)obj;
        string     text       = receiveObj.m_data;

        LogUtil.getInstance().addDebugLog("收到客户端消息:" + text);

        JObject jo;

        try
        {
            jo = JObject.Parse(text);
        }
        catch (JsonReaderException ex)
        {
            // 传过来的数据不是json格式的,一律不理
            LogUtil.getInstance().addDebugLog("客户端传来非json数据:" + text);

            m_endStr = "";

            return;
        }

        if (jo.GetValue("tag") != null)
        {
            string tag = jo.GetValue("tag").ToString();

            // 请求登录接口
            if (tag.CompareTo(TLJCommon.Consts.Tag_Login) == 0)
            {
                NetRespond_Login.doAskCilentReq_Login(receiveObj.m_connId, text);
            }
            // 请求第三方登录
            else if (tag.CompareTo(TLJCommon.Consts.Tag_Third_Login) == 0)
            {
                NetRespond_ThirdLogin.doAskCilentReq_ThirdLogin(receiveObj.m_connId, text);
            }
            // 请求快速注册接口
            else if (tag.CompareTo(TLJCommon.Consts.Tag_QuickRegister) == 0)
            {
                NetRespond_QuickRegister.doAskCilentReq_QuickRegister(receiveObj.m_connId, text);
            }
            // 请求服务器在线玩家信息接口
            else if (tag.CompareTo(TLJCommon.Consts.Tag_OnlineInfo) == 0)
            {
                NetRespond_OnlineInfo.doAskCilentReq_OnlineInfo(receiveObj.m_connId, text);
            }
            // 检查版本
            else if (tag.CompareTo(TLJCommon.Consts.Tag_CheckVerisionCode) == 0)
            {
                NetRespond_CheckVerisionCode.doAskCilentReq_CheckVerisionCode(receiveObj.m_connId, text);
            }
            // 检查版本
            else if (tag.CompareTo(TLJCommon.Consts.Tag_LoginDataStatistics) == 0)
            {
                NetRespond_LoginDataStatistics.doAskCilentReq_LoginDataStatistics(receiveObj.m_connId, text);
            }
            else
            {
                LogUtil.getInstance().addDebugLog("未知Tag:" + tag);
            }
        }
        else
        {
            // 传过来的数据没有tag字段的,一律不理
            LogUtil.getInstance().addDebugLog("客户端传来的数据没有Tag:" + text);
            return;
        }
    }