void ReceiveComplte(IAsyncResult result)
        {
            ClientWrapper client   = result.AsyncState as ClientWrapper;
            List <string> msgArray = new List <string>();
            Exception     Error    = null;

            int ReceiveByteCount     = -1;
            int msglen               = -1;
            int ReceivedBufferLength = client.Buffer.Length;

            try
            {
                ReceiveByteCount = client.Socket.EndReceive(result);//当客户端刷新时此处会引起异常。
                //ReceiveString = Encoding.UTF8.GetString(client.Buffer, 0, ReceiveByteCount);//如果不考虑Flash这样的客户端,使用此句即可。
                //ReceiveString = Encoding.UTF8.GetString(client.Buffer, 4, ReceiveByteCount-4);//考虑Flash版前4个字节用来存放消息长度。


                string TestString = Encoding.UTF8.GetString(client.Buffer, 0, ReceiveByteCount);
                if (TestString.StartsWith("<policy-file-request/>"))
                {
                    Error = new Exception("<policy-file-request/>");

                    FileStream policyStream = new FileStream("PolicyFile.xml", FileMode.Open);

                    byte[] m_policy = new byte[policyStream.Length];
                    policyStream.Read(m_policy, 0, m_policy.Length);

                    policyStream.Close();

                    //client.Socket.BeginSend(m_policy, 0, m_policy.Length, SocketFlags.None, new AsyncCallback(SendComplete), list);
                    client.Socket.BeginSend(m_policy, 0, m_policy.Length, SocketFlags.None, null, null);
                    client.Socket.Close();
                    ClientList.Remove(client);
                }
                else
                {
                    msgArray = GetStringArray(client.Buffer, 0);

                    //byte[] Buf = new byte[client.Buffer.Length];
                    //for (int i = 0; i < client.Buffer.Length; i++)
                    //{
                    //    Buf[i] = client.Buffer[i];
                    //}
                    //msgArray = GetStringArray(Buf,0);

                    //string sep = Encoding.UTF8.GetString(client.Buffer, 0, 4);
                    //string[] temp = TestString.Split(new string[] { sep }, StringSplitOptions.RemoveEmptyEntries);
                    //foreach (var str in temp)
                    //{
                    //    msgArray.Add(str);
                    //}
                    //string[] b = temp;

                    //msgArray.Add(TestString.Replace(sep, ""));



                    //byte[] temp = new byte[4];
                    //temp[0] = client.Buffer[0];
                    //temp[1] = client.Buffer[1];
                    //temp[2] = client.Buffer[2];
                    //temp[3] = client.Buffer[3];
                    //msglen = temp.ToInt32();
                    //Msg = Encoding.UTF8.GetString(client.Buffer, 4, msglen);//考虑Flash版前4个字节用来存放消息长度。

                    client.Buffer = new byte[client.Buffer.Length];
                    client.Socket.BeginReceive(client.Buffer, 0, client.Buffer.Length, SocketFlags.None, new AsyncCallback(ReceiveComplte), client);
                }
            }
            catch (Exception ex)
            {
                Error = ex;

                //ClientList.Remove(client);
                //client.Socket.Close();
            }
            //if (Received != null)
            //{
            //    foreach (var str in msgArray)
            //    {
            //        Received(this, new ReceiveEventArgs()
            //        {
            //            AsyncResult = result,
            //            Msg = str,
            //            Error = Error,
            //            Client = client,
            //            ReceiveByteCount = ReceiveByteCount,
            //            ClientSetByteCount = msglen,
            //            ReceivedBufferLength = ReceivedBufferLength
            //        });
            //        //Thread.Sleep(1000);
            //    }
            //    //Received(this, new ReceiveEventArgs()
            //    //{
            //    //    AsyncResult = result,
            //    //    Msg = Msg,
            //    //    Error = Error,
            //    //    Client = client,
            //    //    ReceiveByteCount = ReceiveByteCount,
            //    //    ClientSetByteCount = msglen,
            //    //    ReceivedBufferLength = ReceivedBufferLength
            //    //});
            //}

            foreach (var str in msgArray)
            {
                //Received(this, new ReceiveEventArgs()
                //{
                //    AsyncResult = result,
                //    Msg = str,
                //    Error = Error,
                //    Client = client,
                //    ReceiveByteCount = ReceiveByteCount,
                //    ClientSetByteCount = msglen,
                //    ReceivedBufferLength = ReceivedBufferLength
                //});
                RaiseReceived(this, new ReceiveEventArgs()
                {
                    AsyncResult          = result,
                    Msg                  = str,
                    Error                = Error,
                    Client               = client,
                    ReceiveByteCount     = ReceiveByteCount,
                    ClientSetByteCount   = msglen,
                    ReceivedBufferLength = ReceivedBufferLength
                });
            }
        }
        void ConnectComplate(IAsyncResult result)
        {
            ClientWrapper client = new ClientWrapper();
            Exception     Error  = null;

            try
            {
                client.Socket = socket.EndAccept(result);
                if (client.Socket.Connected)
                {
                    client.Buffer = new byte[BufferSize];
                    ClientList.Add(client);

                    client.Socket.BeginReceive(client.Buffer, 0, client.Buffer.Length, SocketFlags.None, new AsyncCallback(ReceiveComplte), client);


                    //client.Socket.BeginReceive(client.Buffer, 0, 4, SocketFlags.None, new AsyncCallback(ReceiveComplte), client);
                    //if (IsReceiveMessageLength)
                    //{
                    //client.Socket.BeginReceive(client.Buffer, 0, 4, SocketFlags.None, new AsyncCallback(ReceiveComplte), client);
                    //}
                    //else
                    //{
                    //    client.Socket.BeginReceive(client.Buffer, 0, MesssageLength, SocketFlags.None, new AsyncCallback(ReceiveComplte), client);
                    //}
                }
                socket.BeginAccept(new AsyncCallback(ConnectComplate), null);
            }
            catch (Exception ex)
            {
                Error = ex;
            }



            //if (Connected != null)
            //{
            //    Connected(this, new ConnectEventArgs()
            //    {
            //        AsyncResult = result,
            //        Error = Error
            //    });
            //}
            RaiseConnected(this, new ConnectEventArgs()
            {
                AsyncResult = result,
                Error       = Error
            });


            ////通知客户端状态(压币或开奖),客户端在进入游戏时需要获取此值
            //Infomation info = new Infomation() { IsPress = (GState == GameState.Press), IsOpen = (GState == GameState.Open) };
            ////JsonConverter converter=new
            //string Jstring = JsonConvert.SerializeObject(info);
            //byte[] buffer = Encoding.UTF8.GetBytes(Jstring);
            //if (buffer.Length > ConstParameter.BUFFER_SIZE)
            //{
            //    //此时应该报错 (暂不处理)
            //}

            //client.Socket.BeginSend(buffer, 0, buffer.Length, SocketFlags.None, new AsyncCallback(SendComplete), client);

            //要用一个没有数据的Buffer接收
        }