NetworkStream.Read Metoda

Definicja

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

buffer
Span<Byte>

Region pamięci do przechowywania danych odczytanych z obiektu NetworkStream.

Zwraca

Int32

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

Int32

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.

Zobacz też

Dotyczy