NetworkStream.Read Metod

Definition

Överlagringar

Name Description
Read(Span<Byte>)

Läser data från NetworkStream och lagrar dem till ett intervall med byte i minnet.

Read(Byte[], Int32, Int32)

Läser data från NetworkStream och lagrar dem till en bytematris.

Read(Span<Byte>)

Läser data från NetworkStream och lagrar dem till ett intervall med byte i minnet.

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

Parametrar

buffer
Span<Byte>

En region med minne för att lagra data som lästs NetworkStreamfrån .

Returer

Det totala antalet byte som lästs in i bufferten, mellan noll (0) och buffertens längd. Metoden returnerar endast noll (0) om noll byte begärdes eller om inga fler byte är tillgängliga eftersom peer-socketen utförde en graciös avstängning.

Undantag

Stöder NetworkStream inte läsning.

Ett fel uppstod vid åtkomst till socketen.

-eller-

Det går inte att läsa från nätverket.

Kommentarer

Den här metoden läser så mycket data som är tillgängligt i parametern buffer och returnerar antalet byte som har lästs.

Note

Kontrollera om NetworkStream är läsbart genom att anropa egenskapen CanRead . Om du försöker läsa från en NetworkStream som inte är läsbar får du en InvalidOperationException.

Note

Om du får en IOExceptionkontrollerar du InnerException egenskapen för att avgöra om den orsakades av en SocketException. I så fall använder du egenskapen ErrorCode för att hämta den specifika felkoden och referera till felkoden Windows Sockets version 2 API för en detaljerad beskrivning av felet.

Gäller för

Read(Byte[], Int32, Int32)

Läser data från NetworkStream och lagrar dem till en bytematris.

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
abstract member 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

Parametrar

buffer
Byte[]

En matris av typen Byte som är platsen i minnet för att lagra data som lästs NetworkStreamfrån .

offset
Int32

Platsen i buffer för att börja lagra data till.

size
Int32

Antalet byte som ska läsas från NetworkStream.

Returer

Det totala antalet byte som lästs in i bufferten mellan noll (0) och det begärda antalet. Metoden returnerar endast noll (0) om noll byte begärdes eller om inga fler byte är tillgängliga eftersom peer-socketen utförde en graciös avstängning.

Undantag

buffer är null.

offset är mindre än 0.

-eller-

offset är större än längden på buffer.

-eller-

size är mindre än 0.

-eller-

size är större än längden buffer på minus offset.

Stöder NetworkStream inte läsning.

Ett fel uppstod vid åtkomst till socketen.

-eller-

Det går inte att läsa från nätverket.

Exempel

I följande kodexempel läss data från NetworkStream till en buffert. Om data är tillgängliga fortsätter de att läsa tills dataströmmens slut har nåtts och lägger till mottagna data till en StringBuilder.

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);

Kommentarer

Den här metoden läser in data i buffer och returnerar antalet byte som har lästs. Åtgärden Read läser så mycket data som är tillgängligt, upp till det antal byte som anges av parametern count .

Note

Kontrollera om NetworkStream är läsbart genom att anropa egenskapen CanRead . Om du försöker läsa från en NetworkStream som inte är läsbar får du en InvalidOperationException.

Note

Om du får en IOExceptionkontrollerar du InnerException egenskapen för att avgöra om den orsakades av en SocketException. I så fall använder du egenskapen ErrorCode för att hämta den specifika felkoden och referera till felkoden Windows Sockets version 2 API för en detaljerad beskrivning av felet.

Se även

Gäller för