private void Phase2_End(IAsyncResult ar)
        {
            ReadVerifyReply_SO asyncState = (ReadVerifyReply_SO)ar.AsyncState;

            try
            {
                asyncState.UpdateContext();
                this.EndReadWhole(ar);
            }
            catch (Exception exception)
            {
                asyncState.Exception = exception;
            }
            asyncState.SetCompleted();
        }
        private void Phase1_End(IAsyncResult ar)
        {
            ReadVerifyReply_SO asyncState = (ReadVerifyReply_SO)ar.AsyncState;

            try
            {
                asyncState.UpdateContext();
                this.EndReadWhole(ar);
                int size = this.VerifyReplyAndGetLeftBytes(asyncState.Phase1Data);
                asyncState.Reply = new byte[5 + size];
                asyncState.Phase1Data.CopyTo(asyncState.Reply, 0);
                this.BeginReadWhole(asyncState.Reply, 5, size, new AsyncCallback(this.Phase2_End), asyncState);
            }
            catch (Exception exception)
            {
                asyncState.Exception = exception;
                asyncState.SetCompleted();
            }
        }