Exemplo n.º 1
0
        /// <summary>
        /// 消息处理线程
        /// </summary>
        public void MessageDel()
        {
            while (true)
            {
                try
                {
                    IpMessage img = null;
                    if (messageQueue.TryDequeue(out img))
                    {
                        string msg = img.msg;
                        log.Info(img.ip + "msg:" + msg);
                        switch (msg)
                        {
                        //心跳消息
                        case "OK":
                            PutMessage(img.ip, "OK");
                            break;

                        default:
                            ShowMessage(img.ip + ":" + msg + "\r\n");
                            break;
                        }
                    }
                }
                catch (Exception ex)
                {
                    log.Error(ex);
                }
                Thread.Sleep(10);
            }
        }
Exemplo n.º 2
0
 public void Run()
 {
     while (true)
     {
         try
         {
             IpMessage im = (IpMessage)MessageInstance.getInstance().SendList.Get();
             if (canSend(im.Msg.Length + 42))
             {
                 _serverUdp.Send(im.Msg.Content, im.Msg.Length, im.EndPoint);
                 _lastHasSize = _lastHasSize + im.Msg.Length + 42;
                 _isSend      = 1;
             }
             else
             {
                 if (_isSend == 1)
                 {
                     _lastTicks = DateTime.Now.Ticks;
                 }
                 _isSend = 0;
                 Thread.Sleep(1);
                 _lastHasSize = 0;
             }
         }
         catch (Exception e)
         {
             Log.Log.WriteErrorLog(e.Message);
             Log.Log.WriteErrorLog(e.StackTrace);
         }
     }
 }
Exemplo n.º 3
0
        public void Run()
        {
            while (true)
            {
                try
                {
                    IpMessage   im = (IpMessage)MessageInstance.getInstance().ServerList.Get();
                    BaseMessage bm = im.Msg;
                    if (bm.ToType == GobalDef.BASE_MSG_FT_SERVER)
                    {
                        if (bm.Req == GobalDef.BASE_MSG_FT_REQ)
                        {
                            BaseMessage resultmsg = null;
                            switch (bm.MCommand)
                            {
                            case GobalDef.COMMAND_MTYPE_PUBLIC:
                                resultmsg = ParsePublicMsgReq(bm);
                                break;
                            }
                            im.Msg     = resultmsg;
                            im.Msg.Seq = bm.Seq;
                            im.Msg.PacketBuf();

                            //im.Msg.SetupBuf(im.Msg.Content, 0);
                            MessageInstance.getInstance().SendList.Add(im);
                        }
                        else
                        {
                        }
                    }
                }
                catch (Exception e)
                {
                    Log.Log.WriteErrorLog(e.Message);
                    Log.Log.WriteErrorLog(e.StackTrace);
                }
            }
        }
Exemplo n.º 4
0
        private void AsyncEndRecv(IAsyncResult iar)
        {
            try
            {
                IPEndPoint ipp = new IPEndPoint(IPAddress.Any, 0);
                byte[]     msg = _serverClient.EndReceive(iar, ref ipp);
                try
                {
                    _serverClient.BeginReceive(new AsyncCallback(AsyncEndRecv), _serverClient);
                }
                catch (Exception e)
                {
                    Log.Log.WriteSystemLog("Server Re BeginReceive ERROR, So Can't Receive");
                    Log.Log.WriteErrorLog(e.Message);
                    Log.Log.WriteErrorLog(e.StackTrace);
                }
                Log.Log.WriteErrorLog("recv msg length is: " + msg.Length);
                for (int i = 0; i < msg.Length; i++)
                {
                    Log.Log.WriteErrorLog("index " + i + " " + msg[i].ToString("X"));
                }

                BaseMessage bm = MessageFactroy.GetMesssage(msg, 0);
                if (bm != null)
                {
                    IpMessage im = new IpMessage();
                    im.EndPoint = ipp;
                    im.Msg      = bm;
                    MessageInstance.getInstance().RecvList.Add(im);
                }
            }
            catch (Exception e)
            {
                Log.Log.WriteErrorLog(e.Message);
                Log.Log.WriteErrorLog(e.StackTrace);
            }
        }
Exemplo n.º 5
0
        public void Run()
        {
            while (true)
            {
                try
                {
                    IpMessage  im = (IpMessage)MessageInstance.getInstance().RecvList.Get();
                    DeviceInfo di = null;
                    MobInfo    mi = null;
                    if (im.Msg.Req == GobalDef.BASE_MSG_FT_REQ)
                    {
                        if (im.Msg.FromType == GobalDef.BASE_MSG_FT_HUB)
                        {
                            di = BaseInfoInstance.getInstance().DeviceInfo.GetDeviceInfo(im.Msg.FromDevID);
                            if (di != null)
                            {
                                di.IPPoint = im.EndPoint;
                            }
                        }
                        else if (im.Msg.FromType == GobalDef.BASE_MSG_FT_END)
                        {
                            di = BaseInfoInstance.getInstance().DeviceInfo.GetDeviceInfo(im.Msg.FromDevID);
                            if (di != null)
                            {
                                di = BaseInfoInstance.getInstance().DeviceInfo.GetDeviceInfo(di.ParentId);
                                if (di != null)
                                {
                                    di.IPPoint = im.EndPoint;
                                }
                            }
                        }
                        else if (im.Msg.FromType == GobalDef.BASE_MSG_FT_MOBILE)
                        {
                            mi = BaseInfoInstance.getInstance().MobInfo.GetMobInfo(im.Msg.FromDevID);
                            if (mi != null)
                            {
                                mi.EndPoint = im.EndPoint;
                            }
                        }

                        if (im.Msg.ToType == GobalDef.BASE_MSG_FT_SERVER)
                        {
                            MessageInstance.getInstance().ServerList.Add(im);
                        }
                        else if (im.Msg.ToType == GobalDef.BASE_MSG_FT_HUB)
                        {
                            di = BaseInfoInstance.getInstance().DeviceInfo.GetDeviceInfo(im.Msg.ToDevID);
                            if (di != null)
                            {
                                im.EndPoint = di.IPPoint;
                                MessageInstance.getInstance().SendList.Add(im);
                            }
                        }
                        else if (im.Msg.ToType == GobalDef.BASE_MSG_FT_END)
                        {
                            di = BaseInfoInstance.getInstance().DeviceInfo.GetDeviceInfo(im.Msg.ToDevID);
                            if (di != null)
                            {
                                di = BaseInfoInstance.getInstance().DeviceInfo.GetDeviceInfo(di.ParentId);
                                if (di != null)
                                {
                                    im.EndPoint = di.IPPoint;
                                    MessageInstance.getInstance().SendList.Add(im);
                                }
                            }
                        }
                        else if (im.Msg.ToType == GobalDef.BASE_MSG_FT_MOBILE)
                        {
                            mi = BaseInfoInstance.getInstance().MobInfo.GetMobInfo(im.Msg.ToDevID);
                            if (mi != null)
                            {
                                im.EndPoint = mi.EndPoint;
                                MessageInstance.getInstance().SendList.Add(im);
                            }
                        }
                    }
                    else if (im.Msg.Req == GobalDef.BASE_MSG_FT_RCV)
                    {
                        if (im.Msg.ToType == GobalDef.BASE_MSG_FT_END)
                        {
                            di = BaseInfoInstance.getInstance().DeviceInfo.GetDeviceInfo(im.Msg.FromDevID);
                            if (di != null)
                            {
                                di = BaseInfoInstance.getInstance().DeviceInfo.GetDeviceInfo(di.ParentId);
                                if (di != null)
                                {
                                    di.IPPoint = im.EndPoint;
                                }
                            }
                        }
                        else if (im.Msg.ToType == GobalDef.BASE_MSG_FT_HUB)
                        {
                            di = BaseInfoInstance.getInstance().DeviceInfo.GetDeviceInfo(im.Msg.FromDevID);
                            if (di != null)
                            {
                                di.IPPoint = im.EndPoint;
                            }
                        }
                        else if (im.Msg.ToType == GobalDef.BASE_MSG_FT_MOBILE)
                        {
                            mi = BaseInfoInstance.getInstance().MobInfo.GetMobInfo(im.Msg.FromDevID);
                            if (mi != null)
                            {
                                mi.EndPoint = im.EndPoint;
                            }
                        }



                        if (im.Msg.FromType == GobalDef.BASE_MSG_FT_END)
                        {
                            di = BaseInfoInstance.getInstance().DeviceInfo.GetDeviceInfo(im.Msg.ToDevID);
                            if (di != null)
                            {
                                di = BaseInfoInstance.getInstance().DeviceInfo.GetDeviceInfo(di.ParentId);
                                if (di != null)
                                {
                                    im.EndPoint = di.IPPoint;
                                    MessageInstance.getInstance().SendList.Add(im);
                                }
                            }
                        }
                        else if (im.Msg.FromType == GobalDef.BASE_MSG_FT_HUB)
                        {
                            di = BaseInfoInstance.getInstance().DeviceInfo.GetDeviceInfo(im.Msg.ToDevID);
                            if (di != null)
                            {
                                im.EndPoint = di.IPPoint;
                                MessageInstance.getInstance().SendList.Add(im);
                            }
                        }
                        else if (im.Msg.FromType == GobalDef.BASE_MSG_FT_MOBILE)
                        {
                            mi = BaseInfoInstance.getInstance().MobInfo.GetMobInfo(im.Msg.ToDevID);
                            if (mi != null)
                            {
                                im.EndPoint = mi.EndPoint;
                                MessageInstance.getInstance().SendList.Add(im);
                            }
                        }
                        else if (im.Msg.FromType == GobalDef.BASE_MSG_FT_SERVER)
                        {
                            MessageInstance.getInstance().ServerList.Add(im);
                        }
                    }
                }
                catch (Exception e)
                {
                    Log.Log.WriteErrorLog(e.Message);
                    Log.Log.WriteErrorLog(e.StackTrace);
                }
            }
        }