Поделиться через


NetworkStream.Read Метод

Определение

Перегрузки

Read(Span<Byte>)

Считывает данные из NetworkStream и сохраняет их в диапазоне байтов в памяти.

Read(Byte[], Int32, Int32)

Считывает данные из NetworkStream и сохраняет их в массив байтов.

Read(Span<Byte>)

Исходный код:
NetworkStream.cs
Исходный код:
NetworkStream.cs
Исходный код:
NetworkStream.cs

Считывает данные из NetworkStream и сохраняет их в диапазоне байтов в памяти.

public:
 override int Read(Span<System::Byte> buffer);
public override int Read (Span<byte> buffer);
override this.Read : Span<byte> -> int
Public Overrides Function Read (buffer As Span(Of Byte)) As Integer

Параметры

buffer
Span<Byte>

Область памяти для хранения данных, считанных из NetworkStream.

Возвращаемое значение

Число байтов, читаемых из объекта NetworkStream.

Исключения

NetworkStream не поддерживает чтение.

Произошла ошибка при обращении к сокету.

-или-

Произошел отказ в процессе чтения из сети.

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

Комментарии

Этот метод считывает в параметр столько данных, сколько доступно buffer , и возвращает количество успешно прочитанных байтов.

Примечание

Убедитесь, что объект доступен для NetworkStream чтения, вызвав CanRead свойство . При попытке чтения из NetworkStream объекта , который недоступен для чтения, вы получите .InvalidOperationException

Примечание

Если вы получаете IOException, проверка InnerException свойство, чтобы определить, был ли он вызван SocketException. Если это так, используйте ErrorCode свойство , чтобы получить конкретный код ошибки, и ознакомьтесь с документацией по коду ошибки API сокетов Windows версии 2 , чтобы получить подробное описание ошибки.

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

Read(Byte[], Int32, Int32)

Исходный код:
NetworkStream.cs
Исходный код:
NetworkStream.cs
Исходный код:
NetworkStream.cs

Считывает данные из NetworkStream и сохраняет их в массив байтов.

public:
 override int Read(cli::array <System::Byte> ^ buffer, int offset, int size);
public:
 override int Read(cli::array <System::Byte> ^ buffer, int offset, int count);
public override int Read (byte[] buffer, int offset, int size);
public override int Read (byte[] buffer, int offset, int count);
override this.Read : byte[] * int * int -> int
override this.Read : byte[] * int * int -> int
Public Overrides Function Read (buffer As Byte(), offset As Integer, size As Integer) As Integer
Public Overrides Function Read (buffer As Byte(), offset As Integer, count As Integer) As Integer

Параметры

buffer
Byte[]

Массив типа Byte, который является местоположением в памяти для хранения данных, прочитанных из NetworkStream.

offset
Int32

Местоположение в объекте buffer, начиная с которого записываются сохраняемые данные.

sizecount
Int32

Число байтов, читаемых из объекта NetworkStream.

Возвращаемое значение

Число байтов, читаемых из объекта NetworkStream.

Исключения

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

Значение параметраoffset меньше 0.

-или-

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

-или-

Значение параметраsize меньше 0.

-или-

длина значения size больше, чем длина buffer минус offset.

NetworkStream не поддерживает чтение.

Произошла ошибка при обращении к сокету.

-или-

Произошел отказ в процессе чтения из сети.

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

Примеры

В следующем примере кода используется для DataAvailable определения доступности данных для чтения. Если данные доступны, они считываются из NetworkStream.

byte[] myReadBuffer = new byte[1024];
StringBuilder myCompleteMessage = new StringBuilder();
int numberOfBytesRead = myNetworkStream.Read(myReadBuffer, 0, myReadBuffer.Length);

// Read all the data until the end of stream has been reached.
// The incoming message may be larger than the buffer size.
while (numberOfBytesRead > 0)
{
    myCompleteMessage.Append(Encoding.ASCII.GetString(myReadBuffer, 0, numberOfBytesRead));
    numberOfBytesRead = myNetworkStream.Read(myReadBuffer, 0, myReadBuffer.Length);
}

// Print out the received message to the console.
Console.WriteLine("You received the following message : " + myCompleteMessage);

Комментарии

Этот метод считывает данные в buffer и возвращает число успешно прочитанных байтов. Операция Read считывает столько данных, сколько доступно, вплоть до количества байтов, указанного параметром size .

Примечание

Убедитесь, что объект доступен для NetworkStream чтения, вызвав CanRead свойство . При попытке чтения из NetworkStream объекта , который недоступен для чтения, вы получите .InvalidOperationException

Примечание

Если вы получаете IOException, проверка InnerException свойство, чтобы определить, был ли он вызван SocketException. Если это так, используйте ErrorCode свойство , чтобы получить конкретный код ошибки, и ознакомьтесь с документацией по коду ошибки API сокетов Windows версии 2 , чтобы получить подробное описание ошибки.

См. также раздел

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