NegotiateStream.Write(Byte[], Int32, Int32) Метод

Определение

Записывает указанное количество элементов Byte в базовый поток, используя заданный буфер (параметр buffer) и начальное расположение (параметр offset).

public override void Write (byte[] buffer, int offset, int count);

Параметры

buffer
Byte[]

Массив элементов Byte, предоставляющий байты для записи в поток.

offset
Int32

Значение Int32, содержащее расположение (начиная с нуля) в массиве buffer, с которого требуется начать чтение байтов, записываемых в поток.

count
Int32

Значение Int32, содержащее количество байтов, считываемых из массива buffer.

Исключения

buffer имеет значение null.

offset is less than 0.

-или-

Значение offset превышает длину buffer.

-или-

Сумма значений offset и count превышает длину массива buffer.

Не удалось выполнить операцию записи.

-или-

Используется шифрование, но не удается зашифровать данные.

Уже существует выполняющаяся операция записи.

Объект закрыт.

Проверка подлинности не выполнялась.

Примеры

В следующем примере кода демонстрируется запись в NegotiateStream.

    public static void Main(String[] args)
    {
        // Establish the remote endpoint for the socket.
        // For this example, use the local machine.
        IPHostEntry ipHostInfo = Dns.GetHostEntry(Dns.GetHostName());
        IPAddress ipAddress = ipHostInfo.AddressList[0];
        // Client and server use port 11000.
        IPEndPoint remoteEP = new IPEndPoint(ipAddress,11000);
        // Create a TCP/IP socket.
       TcpClient client = new TcpClient();
        // Connect the socket to the remote endpoint.
        client.Connect(remoteEP);
        Console.WriteLine("Client connected to {0}.",
            remoteEP.ToString());
        // Ensure the client does not close when there is
        // still data to be sent to the server.
        client.LingerState = (new LingerOption(true,0));
        // Request authentication.
        NetworkStream clientStream = client.GetStream();
        NegotiateStream authStream = new NegotiateStream(clientStream);
        // Request authentication for the client only (no mutual authentication).
        // Authenicate using the client's default credetials.
        // Permit the server to impersonate the client to access resources on the server only.
        // Request that data be transmitted using encryption and data signing.
        authStream.AuthenticateAsClient(
             (NetworkCredential) CredentialCache.DefaultCredentials,
             "",
             ProtectionLevel.EncryptAndSign,
             TokenImpersonationLevel.Impersonation);
        DisplayAuthenticationProperties(authStream);
        DisplayStreamProperties(authStream);
        if (authStream.CanWrite)
        {
             // Encode the test data into a byte array.
            byte[] message = System.Text.Encoding.UTF8.GetBytes("Hello from the client.");
            authStream.Write(message, 0, message.Length);
            authStream.Flush();
            Console.WriteLine("Sent {0} bytes.", message.Length);
        }
        // Close the client connection.
        authStream.Close();
        Console.WriteLine("Client closed.");
}

Комментарии

Если шифрование, подписывание или шифрование и подписывание включены, этот метод считывает данные из буфера, шифрует, подписывает или подписывает их, а также передает их с помощью базового потока. Если не используются службы безопасности, такие как шифрование данных или подписывание, этот метод вызывается Write в базовом потоке.

Этот метод блокируется, пока операция записи завершается. Чтобы предотвратить блокировку во время завершения операции, используйте WriteAsync метод .

Вы не сможете вызвать этот метод, пока не пройдете проверку подлинности. Для проверки подлинности AuthenticateAsClientвызовите один из методов , BeginAuthenticateAsClientAuthenticateAsClientAsync, AuthenticateAsServer, , AuthenticateAsServerAsyncили BeginAuthenticateAsServer .

Класс NegotiateStream не поддерживает несколько одновременных операций записи. При попытке запустить операцию записи, когда другая операция записи уже выполняется в том же потоке, NotSupportedException возникнет исключение.

Применяется к

Өнім Нұсқалар
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1