/// <summary>
 /// ������Ϣ
 /// </summary>
 /// <param name="Data">Ҫ���͵���Ϣ</param>
 /// <param name="myTcp">������Ϣ�Ķ���</param>
 private void Send(byte[] Data, MyTcp myTcp)
 {
     Data= SealedMsg.SendMsgBytes(Data);
     try
     {
         if(myTcp.Socket.Connected)
         myTcp.Socket.BeginSend(Data,0,Data.Length, System.Net.Sockets.SocketFlags.None,new AsyncCallback(AsyncClientSend),myTcp);
     }
     catch (Exception ex)
     {
         Error(myTcp, new CSS.IM.Library.Net.SockEventArgs(7, ex.Message));
     }
 }
        /// <summary>
        /// �첽����Socket��������
        /// </summary>
        /// <param name="aResult">IAsyncResult�ӿڶ���</param>
        private void AsyncAcceptSocket(IAsyncResult aResult)
        {
            System.Net.Sockets.Socket sock = (System.Net.Sockets.Socket)aResult.AsyncState;

            try
            {
                if (IsStopServer == false)//���û����ֹ����
                {
                    System.Net.Sockets.Socket handler = sock.EndAccept(aResult);//����������

                    //�ж�handler�Dz��DZ�����Ϊnull�����Ϊnull��ʾ������ִ��AcceptSocket�������û���OnAcceptSocket�а������ͷŵ�
                    if (handler != null)
                    {
                        //�ж��Ƿ񱣳����ӣ����Ϊfalse����ʾ������ִ��AcceptSocket�������û���OnAcceptSocket�а����ӶϿ���
                        if (handler.Connected)
                        {
                            if (_clientSocketList.Count == AllowMaxConnectCount)//�������������ﵽ����ʱ��ֹͣ�����µķ���
                            {
                                MaxConnectCountArrival(this, new CSS.IM.Library.Net.SockEventArgs());//�������������ﵽ�����¼�
                                handler.Shutdown(System.Net.Sockets.SocketShutdown.Both);
                                handler.Close();
                                handler = null;
                            }
                            else
                            {
                                MyTcp myTcp = new MyTcp();
                                myTcp.Socket = handler;
                                _clientSocketList.Add(myTcp);

                                myTcp.OnClose += new MyTcp.CloseEventHandler(myTcp_OnClose);//����MyTcp��Socket�ر��¼�

                                AcceptClientSocket(myTcp, new CSS.IM.Library.Net.SockEventArgs());//���������������¼�

                                if (IsStopServer == false)//���û����ֹ��������ʼ�첽���������ӵ�����
                                    myTcp.Socket.BeginReceive(myTcp.Buffer, 0, myTcp.Buffer.Length, System.Net.Sockets.SocketFlags.None, new AsyncCallback(AsyncClientSocketReceive), myTcp);
                            }
                        }
                        else
                        {
                            handler = null;
                        }
                    }
                    if (IsStopServer == false)//���û����ֹ������������첽��������������
                    {
                        sock.BeginAccept(new AsyncCallback(AsyncAcceptSocket), sock);
                    }
                }
            }
            catch (Exception ex)
            {
                //�������ӹ��̷����쳣�ر�����
                Stop();
                Error(this, new CSS.IM.Library.Net.SockEventArgs(5, ex.Message));
            }
        }
        /// <summary>
        /// �����رտͻ�������
        /// </summary>
        /// <param name="myTcp">�ͻ��˶���</param>
        private void CloseClientSocket(MyTcp myTcp)
        {
            if (myTcp.Closed == true) return;

            myTcp.Closed = true;

            try
            {
                if (myTcp.Socket  != null)
                {
                    if (myTcp.Socket.Connected)
                        myTcp.Socket.Shutdown(System.Net.Sockets.SocketShutdown.Both);
                    myTcp.Socket.Close();
                    myTcp.Socket = null;
                }
                try
                {
                    _clientSocketList.Remove(myTcp);
                    Close(myTcp, new CSS.IM.Library.Net.SockEventArgs());//�����ر��¼�
                }
                catch
                { }

            }
            catch (Exception ex)
            {
                Error(myTcp, new CSS.IM.Library.Net.SockEventArgs(3, ex.Message));
            }
        }
 /// <summary>
 /// ������Ϣ(�첽����)
 /// </summary>
 /// <param name="Data">Ҫ���͵���Ϣ</param>
 /// <param name="myTcp">������Ϣ��myTcp����</param>
 public void SendData(byte[] Data, MyTcp myTcp)
 {
     Send(Data, myTcp);
 }