NetworkStream.Read Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Przeciążenia
Read(Span<Byte>) |
Odczytuje dane z obiektu NetworkStream i zapisuje je w zakresie bajtów w pamięci. |
Read(Byte[], Int32, Int32) |
Odczytuje dane z obiektu NetworkStream i zapisuje je w tablicy bajtów. |
Read(Span<Byte>)
Odczytuje dane z obiektu NetworkStream i zapisuje je w zakresie bajtów w pamięci.
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
Parametry
Region pamięci do przechowywania danych odczytanych z obiektu NetworkStream.
Zwraca
Liczba bajtów odczytanych z elementu NetworkStream.
Wyjątki
Element NetworkStream nie obsługuje odczytywania.
Wystąpił błąd podczas uzyskiwania dostępu do gniazda.
-lub-
Wystąpił błąd odczytu z sieci.
Element NetworkStream jest zamknięty.
Uwagi
Ta metoda odczytuje tyle danych, ile jest dostępnych w parametrze buffer
i zwraca liczbę bajtów pomyślnie odczytanych.
Uwaga
Sprawdź, czy właściwość NetworkStream jest czytelna, wywołując CanRead właściwość . Jeśli spróbujesz odczytać z elementu NetworkStream , który nie jest czytelny, otrzymasz polecenie InvalidOperationException.
Uwaga
Jeśli otrzymasz obiekt IOException, sprawdź InnerException właściwość , aby określić, czy została spowodowana przez SocketExceptionelement . Jeśli tak, użyj ErrorCode właściwości , aby uzyskać określony kod błędu i zapoznaj się z dokumentacją kodu błędu interfejsu API Windows Sockets w wersji 2, aby uzyskać szczegółowy opis błędu.
Dotyczy
Read(Byte[], Int32, Int32)
Odczytuje dane z obiektu NetworkStream i zapisuje je w tablicy bajtów.
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
Parametry
- buffer
- Byte[]
Tablica typu Byte , która jest lokalizacją w pamięci do przechowywania danych odczytanych z elementu NetworkStream.
- offset
- Int32
Lokalizacja w pliku , buffer
w ramach która rozpocznie przechowywanie danych.
- sizecount
- Int32
Liczba bajtów do odczytania z elementu NetworkStream.
Zwraca
Liczba bajtów odczytanych z elementu NetworkStream.
Wyjątki
buffer
to null
.
offset
wartość jest mniejsza niż 0.
-lub-
offset
jest większa niż długość obiektu buffer
.
-lub-
size
wartość jest mniejsza niż 0.
-lub-
size
jest większa niż długość buffer
minus offset
.
Element NetworkStream nie obsługuje odczytywania.
Wystąpił błąd podczas uzyskiwania dostępu do gniazda.
-lub-
Wystąpił błąd odczytu z sieci.
Element NetworkStream jest zamknięty.
Przykłady
Poniższy przykład kodu używa metody DataAvailable do określenia, czy dane są dostępne do odczytu. Jeśli dane są dostępne, odczytuje je z elementu NetworkStream.
// Examples for CanRead, Read, and DataAvailable.
// Check to see if this NetworkStream is readable.
if ( myNetworkStream->CanRead )
{
array<Byte>^ myReadBuffer = gcnew array<Byte>(1024);
String^ myCompleteMessage = "";
int numberOfBytesRead = 0;
// Incoming message may be larger than the buffer size.
do
{
numberOfBytesRead = myNetworkStream->Read( myReadBuffer, 0,
myReadBuffer->Length );
myCompleteMessage = String::Concat( myCompleteMessage,
Encoding::ASCII->GetString( myReadBuffer, 0, numberOfBytesRead ) );
}
while ( myNetworkStream->DataAvailable );
// Print out the received message to the console.
Console::WriteLine( "You received the following message : {0}",
myCompleteMessage );
}
else
{
Console::WriteLine( "Sorry. You cannot read from this NetworkStream." );
}
// Examples for CanRead, Read, and DataAvailable.
// Check to see if this NetworkStream is readable.
if(myNetworkStream.CanRead){
byte[] myReadBuffer = new byte[1024];
StringBuilder myCompleteMessage = new StringBuilder();
int numberOfBytesRead = 0;
// Incoming message may be larger than the buffer size.
do{
numberOfBytesRead = myNetworkStream.Read(myReadBuffer, 0, myReadBuffer.Length);
myCompleteMessage.AppendFormat("{0}", Encoding.ASCII.GetString(myReadBuffer, 0, numberOfBytesRead));
}
while(myNetworkStream.DataAvailable);
// Print out the received message to the console.
Console.WriteLine("You received the following message : " +
myCompleteMessage);
}
else{
Console.WriteLine("Sorry. You cannot read from this NetworkStream.");
}
' Examples for CanRead, Read, and DataAvailable.
' Check to see if this NetworkStream is readable.
If myNetworkStream.CanRead Then
Dim myReadBuffer(1024) As Byte
Dim myCompleteMessage As StringBuilder = New StringBuilder()
Dim numberOfBytesRead As Integer = 0
' Incoming message may be larger than the buffer size.
Do
numberOfBytesRead = myNetworkStream.Read(myReadBuffer, 0, myReadBuffer.Length)
myCompleteMessage.AppendFormat("{0}", Encoding.ASCII.GetString(myReadBuffer, 0, numberOfBytesRead))
Loop While myNetworkStream.DataAvailable
' Print out the received message to the console.
Console.WriteLine(("You received the following message : " + myCompleteMessage.ToString()))
Else
Console.WriteLine("Sorry. You cannot read from this NetworkStream.")
End If
Uwagi
Ta metoda odczytuje dane do buffer
i zwraca liczbę bajtów, które zostały pomyślnie odczytane. Operacja Read
odczytuje tyle danych, ile jest dostępnych, do liczby bajtów określonych przez size
parametr .
Uwaga
Sprawdź, czy właściwość NetworkStream jest czytelna, wywołując CanRead właściwość . Jeśli spróbujesz odczytać z elementu NetworkStream , który nie jest czytelny, otrzymasz polecenie InvalidOperationException.
Uwaga
Jeśli otrzymasz obiekt IOException, sprawdź InnerException właściwość , aby określić, czy została spowodowana przez SocketExceptionelement . Jeśli tak, użyj ErrorCode właściwości , aby uzyskać określony kod błędu i zapoznaj się z dokumentacją kodu błędu interfejsu API Windows Sockets w wersji 2, aby uzyskać szczegółowy opis błędu.