/// <summary>
        /// 异步接收回调函数
        /// </summary>
        /// <param name="ir"></param>
        private void EndReader(IAsyncResult ir)
        {
            SocketUserToken ir_UserToken = ir.AsyncState as SocketUserToken;

            try
            {
                if (ir_UserToken.m_nStream != null)
                {
                    if (m_tcpClient == null)
                    {
                        ir_UserToken.m_nStream.Close();
                        ir_UserToken.m_nStream.Dispose();
                        return;
                    }
                    ir_UserToken.Offset = ir_UserToken.m_nStream.EndRead(ir);
                    byte[] buffer = new byte[ir_UserToken.Offset];
                    Array.Copy(ir_UserToken.ReceiveBuffer.Buffer, buffer, ir_UserToken.Offset);
                    string tmpStr = Encoding.UTF8.GetString(buffer, 0, ir_UserToken.Offset);
                    if (!m_InDataParser.DecodeProtocolText(tmpStr))            //组装成功则进入
                    {
                        ir_UserToken.ReceiveBuffer.Clear(ir_UserToken.Offset); //接收完成后清除掉前面的缓存
                        //组装接收的协议
                        //   DelegateState.ServerStateInfo("信息" + Encoding.UTF8.GetString(buffer));//处理信息
                    }
                    UserToken.m_nStream.BeginRead(UserToken.ReceiveBuffer.Buffer, 0, UserToken.ReceiveBuffer.Buffer.Length, new AsyncCallback(EndReader), UserToken);
                }
            }
            catch (Exception ex)
            {
                DelegateState.ServerStateInfo("接收异常:" + ex.Message);
            }
        }
        /// <summary>
        /// 连接服务器
        /// </summary>
        /// <param name="host">IP</param>
        /// <param name="port">地址</param>
        public void Connect(string Serverip, int Port)
        {
            m_outDataParser = new AssemblyOutDataParser();
            m_InDataParser  = new AssemblyInDataParser();

            m_tcpClient = new TcpClient();
            m_tcpClient.Client.Blocking = true;
            m_tcpClient.Client.Bind(new IPEndPoint(IPAddress.Parse(Serverip), Port));
            m_tcpClient.Connect(Serverip, Port);
            m_tcpClient.Client.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);
            NetworkStream nStream = new NetworkStream(m_tcpClient.Client, true);

            UserToken = new SocketUserToken(Serverip, Port, m_tcpClient, nStream);
            UserToken.m_nStream.BeginRead(UserToken.ReceiveBuffer.Buffer, 0, UserToken.ReceiveBuffer.Buffer.Length, new AsyncCallback(EndReader), UserToken);
        }