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 |
---|---|
buffer ist NULL (Nothing in Visual Basic). |
|
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. |
|
Der zugrunde liegende Socket ist geschlossen. |
|
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