Freigeben über


NetworkStream.Read-Methode

Liest Daten aus dem NetworkStream.

Namespace: System.Net.Sockets
Assembly: System (in system.dll)

Syntax

'Declaration
Public Overrides Function Read ( _
    <InAttribute> <OutAttribute> buffer As Byte(), _
    offset As Integer, _
    size As Integer _
) As Integer
'Usage
Dim instance As NetworkStream
Dim buffer As Byte()
Dim offset As Integer
Dim size As Integer
Dim returnValue As Integer

returnValue = instance.Read(buffer, offset, size)
public override int Read (
    [InAttribute] [OutAttribute] byte[] buffer,
    int offset,
    int size
)
public:
virtual int Read (
    [InAttribute] [OutAttribute] array<unsigned char>^ buffer, 
    int offset, 
    int size
) override
public int Read (
    /** @attribute InAttribute() */ /** @attribute OutAttribute() */ byte[] buffer, 
    int offset, 
    int size
)
public override function Read (
    buffer : byte[], 
    offset : int, 
    size : int
) : int

Parameter

  • buffer
    Ein Array vom Typ Byte, das dem Speicherort entspricht, an dem aus dem NetworkStream gelesene Daten gespeichert werden.
  • offset
    Die Position im buffer, an der mit dem Speichern der Daten begonnen werden soll.
  • size
    Die Anzahl der aus dem NetworkStream zu lesenden Bytes.

Rückgabewert

Die Anzahl der aus dem NetworkStream gelesenen Bytes.

Ausnahmen

Ausnahmetyp Bedingung

ArgumentNullException

buffer ist NULL (Nothing in Visual Basic).

ArgumentOutOfRangeException

offset ist kleiner als 0.

- oder -

offset ist größer als die Länge von buffer.

- oder -

size ist kleiner als 0.

- oder -

size ist größer als die Länge von buffer minus dem Wert des offset-Parameters.

– oder –

Fehler beim Zugriff auf den Socket. Weitere Informationen finden Sie im Abschnitt Hinweise.

IOException

Der zugrunde liegende Socket ist geschlossen.

ObjectDisposedException

Der NetworkStream ist geschlossen.

- oder -

Beim Lesen aus dem Netzwerk tritt ein Fehler auf.

Hinweise

Diese Methode liest Daten in den buffer-Parameter und gibt die Anzahl der erfolgreich gelesenen Bytes zurück. Wenn keine Daten zum Lesen verfügbar sind, gibt die Read-Methode 0 zurück. Der Read-Vorgang liest alle verfügbaren Daten bis zu der im size-Parameter angegebenen Anzahl von Bytes. Wenn der Remotehost die Verbindung schließt und alle verfügbaren Daten empfangen wurden, wird die Read-Methode sofort abgeschlossen, und diese gibt 0 (null) Bytes zurück.

Hinweis

Überprüfen Sie durch den Aufruf der CanRead-Eigenschaft, ob derNetworkStream gelesen werden kann. Wenn Sie versuchen, Daten aus einem nicht lesbaren NetworkStream zu lesen, wird eine IOException ausgelöst.

Hinweis

Wenn Sie eine IOException erhalten, überprüfen Sie die InnerException-Eigenschaft, um zu bestimmen, ob die Ausnahme von einer SocketException verursacht wurde. Verwenden Sie in diesem Fall die ErrorCode-Eigenschaft, um den spezifischen Fehlercode abzurufen. In MSDN finden Sie in der Dokumentation zu API-Fehlercodes unter Windows Sockets, Version 2, eine ausführliche Beschreibung des Fehlers.

Beispiel

Im folgenden Codebeispiel wird DataAvailable verwendet, um zu bestimmen, ob lesbare Daten verfügbar sind. Wenn lesbare Daten verfügbar sind, werden sie aus dem NetworkStream gelesen.

' 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
           
// 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.");
}
// 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." );
}
// Check to see if this NetworkStream is readable.
if (myNetworkStream.get_CanRead()) {
    ubyte myReadBuffer[] = new ubyte[1024];
    String myCompleteMessage = "";
    int numberOfBytesRead = 0;
    // Incoming message may be larger than the buffer size.
    do {
        numberOfBytesRead = myNetworkStream.Read(myReadBuffer,
            0, myReadBuffer.get_Length());
        myCompleteMessage = String.Concat(myCompleteMessage, 
            Encoding.get_ASCII().GetString(myReadBuffer, 0, 
            numberOfBytesRead));
    } while (myNetworkStream.get_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.");
}

Plattformen

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile für Pocket PC, Windows Mobile für Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.

Versionsinformationen

.NET Framework

Unterstützt in: 2.0, 1.1, 1.0

.NET Compact Framework

Unterstützt in: 2.0, 1.0

Siehe auch

Referenz

NetworkStream-Klasse
NetworkStream-Member
System.Net.Sockets-Namespace
Receive
DataAvailable
CanRead

Weitere Ressourcen

Verwenden von Streams im Netzwerk