public override IAsyncResult BeginReceive(byte[] buffer, int offset, int size, SocketFlags socketFlags, AsyncCallback callback, object state) {
if (SecureProtocol == SecureProtocol.None)
return base.BeginReceive(buffer, offset, size, socketFlags, callback, state);
if (!Connected && m_SentShutdownNotification)
throw new SocketException();
if (buffer == null)
throw new ArgumentNullException();
if (offset < 0 || (offset >= buffer.Length && size != 0) || size > buffer.Length - offset)
throw new ArgumentOutOfRangeException();
return m_Controller.BeginReceive(buffer, offset, size, callback, state);
}
/// <summary>