NetworkStream.Read Metoda

Definicja

Przeciążenia

Read(Span<Byte>)

Odczytuje dane z NetworkStream i zapisuje je do zakresu bajtów w pamięci.Reads data from the NetworkStream and stores it to a span of bytes in memory.

Read(Byte[], Int32, Int32)

Odczytuje dane z NetworkStream i zapisuje je w tablicy bajtów.Reads data from the NetworkStream and stores it to a byte array.

Read(Span<Byte>)

Odczytuje dane z NetworkStream i zapisuje je do zakresu bajtów w pamięci.Reads data from the NetworkStream and stores it to a span of bytes in memory.

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 służący do przechowywania danych odczytywanych z programu NetworkStream .A region of memory to store data read from the NetworkStream.

Zwraca

Int32

Liczba bajtów odczytanych z NetworkStream .The number of bytes read from the NetworkStream.

Wyjątki

Program nie NetworkStream obsługuje odczytywania.The NetworkStream does not support reading.

Wystąpił błąd podczas uzyskiwania dostępu do gniazda.An error occurred when accessing the socket.

-lub--or-

Wystąpił błąd podczas odczytywania z sieci.There is a failure reading from the network.

NetworkStreamJest zamknięty.The NetworkStream is closed.

Uwagi

Ta metoda odczytuje tyle danych, ile jest dostępnych w buffer parametrze i zwraca liczbę pomyślnie odczytywanych bajtów.This method reads as much data as is available into the buffer parameter and returns the number of bytes successfully read.

Uwaga

Sprawdź, czy NetworkStream jest możliwy do odczytania przez wywołanie CanRead właściwości.Check to see if the NetworkStream is readable by calling the CanRead property. W przypadku próby odczytu z programu, NetworkStream który nie jest czytelny, zostanie wyświetlony komunikat InvalidOperationException .If you attempt to read from a NetworkStream that is not readable, you will get an InvalidOperationException.

Uwaga

Jeśli zostanie wyświetlony komunikat IOException , sprawdź InnerException Właściwość, aby określić, czy został on spowodowany przez SocketException .If you receive an IOException, check the InnerException property to determine if it was caused by a SocketException. 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.If so, use the ErrorCode property to obtain the specific error code and refer to the Windows Sockets version 2 API error code documentation for a detailed description of the error.

Dotyczy

Read(Byte[], Int32, Int32)

Odczytuje dane z NetworkStream i zapisuje je w tablicy bajtów.Reads data from the NetworkStream and stores it to a byte array.

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

Parametry

buffer
Byte[]

Tablica typu Byte będąca lokalizacją w pamięci do przechowywania danych odczytanych z NetworkStream .An array of type Byte that is the location in memory to store data read from the NetworkStream.

offset
Int32

Lokalizacja w, w której buffer rozpocznie się przechowywanie danych.The location in buffer to begin storing the data to.

size
Int32

Liczba bajtów do odczytania z NetworkStream .The number of bytes to read from the NetworkStream.

Zwraca

Int32

Liczba bajtów odczytanych z NetworkStream .The number of bytes read from the NetworkStream.

Wyjątki

buffer to null.buffer is null.

offset jest mniejsza niż 0.offset is less than 0.

-lub--or- offset jest większa niż długość buffer .offset is greater than the length of buffer.

-lub--or- size jest mniejsza niż 0.size is less than 0.

-lub--or- size jest większa niż długość buffer znaku minus offset .size is greater than the length of buffer minus offset.

Program nie NetworkStream obsługuje odczytywania.The NetworkStream does not support reading.

Wystąpił błąd podczas uzyskiwania dostępu do gniazda.An error occurred when accessing the socket.

-lub--or-

Wystąpił błąd podczas odczytywania z sieci.There is a failure reading from the network.

NetworkStreamJest zamknięty.The NetworkStream is closed.

Przykłady

Poniższy przykład kodu używa DataAvailable do określenia, czy dane są dostępne do odczytu.The following code example uses DataAvailable to determine if data is available to be read. Jeśli dane są dostępne, odczytuje z NetworkStream .If data is available, it reads from the 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ę pomyślnie odczytywanych bajtów.This method reads data into buffer and returns the number of bytes successfully read. ReadOperacja odczytuje tyle danych, ile jest dostępnych, do liczby bajtów określonej przez size parametr.The Read operation reads as much data as is available, up to the number of bytes specified by the size parameter.

Uwaga

Sprawdź, czy NetworkStream jest możliwy do odczytania przez wywołanie CanRead właściwości.Check to see if the NetworkStream is readable by calling the CanRead property. W przypadku próby odczytu z programu, NetworkStream który nie jest czytelny, zostanie wyświetlony komunikat InvalidOperationException .If you attempt to read from a NetworkStream that is not readable, you will get an InvalidOperationException.

Uwaga

Jeśli zostanie wyświetlony komunikat IOException , sprawdź InnerException Właściwość, aby określić, czy został on spowodowany przez SocketException .If you receive an IOException, check the InnerException property to determine if it was caused by a SocketException. 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.If so, use the ErrorCode property to obtain the specific error code and refer to the Windows Sockets version 2 API error code documentation for a detailed description of the error.

Zobacz też

Dotyczy