/// <summary>
        /// 接收
        /// </summary>
        /// <returns></returns>
        public byte[] LowLevelRecv(JustAdapter adapter)
        {
            //Console.WriteLine("接收到一个数据包");

            List <UdpClient> sockets = adapter.TAG as List <UdpClient>;

            byte[] buffer = null;

            JustUdpBroadcastMessage msg = null;

            adapter.LastEventType = JustEventType.Successful;

            if (messages.Count > 0)
            {
                msg = this.messages.Dequeue();
                this.recvEvent.Reset();
            }
            else
            {
                this.recvEvent.WaitOne();
                msg = this.messages.Dequeue();
            }

            if (msg != null)
            {
                adapter.LastEventType = msg.Type;
                buffer = msg.buffer;
            }

            return(buffer);
        }
        /// <summary>
        /// 接收线程回掉
        /// </summary>
        /// <param name="ar"></param>
        private void ReceiveCallback(IAsyncResult ar)
        {
            Console.WriteLine("ReceiveCallback");

            UdpClient udpSocket = (UdpClient)ar.AsyncState;

            JustUdpBroadcastMessage msg = new JustUdpBroadcastMessage();
            IPEndPoint endport          = new IPEndPoint(IPAddress.Any, 0);
            UdpClient  socket           = (UdpClient)ar.AsyncState;

            msg.Type = JustEventType.Successful;
            try
            {
                //msg.buffer = udpSocket.Receive(ref endport);
                msg.buffer = udpSocket.EndReceive(ar, ref endport);
            }
            catch (TimeoutException e)
            {
                Console.WriteLine(e);
                msg.Type = JustEventType.Timeout;
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                msg.Type = JustEventType.Unknow;
            }
            finally
            {
                this.messages.Enqueue(msg);
                recvEvent.Set();
                Console.WriteLine("收到包");
                if (isStartRecv)
                {
                    udpSocket.BeginReceive(ReceiveCallback, udpSocket);
                }
            }
        }
        /// <summary>
        /// 接收线程回掉
        /// </summary>
        /// <param name="ar"></param>
        private void ReceiveCallback(IAsyncResult ar)
        {
            Console.WriteLine("ReceiveCallback");

            UdpClient udpSocket = (UdpClient)ar.AsyncState;

            JustUdpBroadcastMessage msg = new JustUdpBroadcastMessage();
            IPEndPoint endport = new IPEndPoint(IPAddress.Any, 0);
            UdpClient socket = (UdpClient)ar.AsyncState;

            msg.Type = JustEventType.Successful;
            try
            {
                //msg.buffer = udpSocket.Receive(ref endport);
                msg.buffer = udpSocket.EndReceive(ar, ref endport);
            }
            catch (TimeoutException e)
            {
                Console.WriteLine(e);
                msg.Type = JustEventType.Timeout;
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                msg.Type = JustEventType.Unknow;
            }
            finally
            {
                this.messages.Enqueue(msg);
                recvEvent.Set();
                Console.WriteLine("收到包");
                if (isStartRecv)
                {
                    udpSocket.BeginReceive(ReceiveCallback, udpSocket);
                }
            }
        }