Esempio n. 1
0
 public void AddReqPackage(UdpReponseBase req)
 {
     lock (responseQueue)
     {
         responseQueue.Add(req);
     }
 }
Esempio n. 2
0
        private UdpReponseBase GetReponsePackage(byte[] data)
        {
            UdpReponseBase package = new UdpReponseBase();

            package.Id         = BitConverter.ToInt64(data, 4);
            package.ClientId   = BitConverter.ToInt32(data, 20);
            package.ProtocolId = BitConverter.ToInt32(data, 24);
            package.TimeTick   = BitConverter.ToInt64(data, 28);
            package.ipEnd      = receiveClientIpend;
            package.Init(data);
            return(package);
        }
Esempio n. 3
0
        private void ReceiveMessage()
        {
            while (true)
            {
                Thread.Sleep(1);
                try
                {
                    UdpReponseBase reponse = null;
                    lock (mainLock)
                    {
                        switch (status)
                        {
                        case 1:
                            break;

                        case 2:
                            continue;

                        default:
                            goto StopServer;
                        }

                        byte[] data = udp2ClientResponse.Receive(ref receiveClientIpend);//默认每次只接收一个包
                        data = CheckPack(data);
                        if (data == null)
                        {
                            continue;
                        }

                        reponse = GetReponsePackage(data);
                    }
                    AddReqPackage(reponse);
                }
                catch (Exception e)
                {
                    LogAgent.LogError("Udp消息接收失败\t" + e.ToString());
                }
            }


StopServer:
            Interlocked.Add(ref status, 1);
            LogAgent.Log("!关闭Udp循环线程");
        }