TcpClient.GetStream Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Retourne le NetworkStream utilisé pour l'envoi et la réception de données.
public:
System::Net::Sockets::NetworkStream ^ GetStream();
public System.Net.Sockets.NetworkStream GetStream ();
member this.GetStream : unit -> System.Net.Sockets.NetworkStream
Public Function GetStream () As NetworkStream
Retours
L'élément NetworkStream sous-jacent.
Exceptions
TcpClient n'est pas connecté à un hôte distant.
TcpClient a été fermé.
Exemples
L’exemple de code suivant utilise GetStream
pour obtenir le sous-jacent NetworkStream. Après avoir obtenu , il envoie et reçoit à l’aide NetworkStreamde ses Write méthodes et Read .
TcpClient^ tcpClient = gcnew TcpClient;
// Uses the GetStream public method to return the NetworkStream.
NetworkStream^ netStream = tcpClient->GetStream();
if ( netStream->CanWrite )
{
array<Byte>^sendBytes = Encoding::UTF8->GetBytes( "Is anybody there?" );
netStream->Write( sendBytes, 0, sendBytes->Length );
}
else
{
Console::WriteLine( "You cannot write data to this stream." );
tcpClient->Close();
// Closing the tcpClient instance does not close the network stream.
netStream->Close();
return;
}
if ( netStream->CanRead )
{
// Reads NetworkStream into a byte buffer.
array<Byte>^bytes = gcnew array<Byte>(tcpClient->ReceiveBufferSize);
// Read can return anything from 0 to numBytesToRead.
// This method blocks until at least one byte is read.
netStream->Read( bytes, 0, (int)tcpClient->ReceiveBufferSize );
// Returns the data received from the host to the console.
String^ returndata = Encoding::UTF8->GetString( bytes );
Console::WriteLine( "This is what the host returned to you: {0}", returndata );
}
else
{
Console::WriteLine( "You cannot read data from this stream." );
tcpClient->Close();
// Closing the tcpClient instance does not close the network stream.
netStream->Close();
return;
}
using TcpClient tcpClient = new TcpClient();
tcpClient.ConnectAsync("contoso.com", 5000);
using NetworkStream netStream = tcpClient.GetStream();
// Send some data to the peer.
byte[] sendBuffer = Encoding.UTF8.GetBytes("Is anybody there?");
netStream.Write(sendBuffer);
// Receive some data from the peer.
byte[] receiveBuffer = new byte[1024];
int bytesReceived = netStream.Read(receiveBuffer);
string data = Encoding.UTF8.GetString(receiveBuffer.AsSpan(0, bytesReceived));
Console.WriteLine($"This is what the peer sent to you: {data}");
Dim tcpClient As New TcpClient()
' Uses the GetStream public method to return the NetworkStream.
Dim netStream As NetworkStream = tcpClient.GetStream()
If netStream.CanWrite Then
Dim sendBytes As [Byte]() = Encoding.UTF8.GetBytes("Is anybody there?")
netStream.Write(sendBytes, 0, sendBytes.Length)
Else
Console.WriteLine("You cannot write data to this stream.")
tcpClient.Close()
' Closing the tcpClient instance does not close the network stream.
netStream.Close()
Return
End If
If netStream.CanRead Then
' Reads the NetworkStream into a byte buffer.
Dim bytes(tcpClient.ReceiveBufferSize) As Byte
' Read can return anything from 0 to numBytesToRead.
' This method blocks until at least one byte is read.
netStream.Read(bytes, 0, CInt(tcpClient.ReceiveBufferSize))
' Returns the data received from the host to the console.
Dim returndata As String = Encoding.ASCII.GetString(bytes)
Console.WriteLine(("This is what the host returned to you: " + returndata))
Else
Console.WriteLine("You cannot read data from this stream.")
tcpClient.Close()
' Closing the tcpClient instance does not close the network stream.
netStream.Close()
Return
End If
' Uses the Close public method to close the network stream and socket.
tcpClient.Close()
End Sub
Remarques
La GetStream
méthode retourne un NetworkStream que vous pouvez utiliser pour envoyer et recevoir des données. La NetworkStream
classe hérite de la Stream classe , qui fournit une collection riche de méthodes et de propriétés utilisées pour faciliter les communications réseau.
Vous devez d’abord appeler la Connect méthode, sinon la GetStream méthode lève un InvalidOperationException. Une fois que vous avez obtenu , NetworkStream
appelez la Write méthode pour envoyer des données à l’hôte distant. Appelez la Read méthode pour recevoir des données provenant de l’hôte distant. Ces deux méthodes se bloquent jusqu’à ce que l’opération spécifiée soit effectuée. Vous pouvez éviter de bloquer une opération de lecture en vérifiant la DataAvailable propriété . Une true
valeur signifie que les données sont arrivées de l’hôte distant et qu’elles peuvent être lues. Dans ce cas, Read est garanti de se terminer immédiatement. Si l’hôte distant a arrêté sa connexion, Read retourne immédiatement avec zéro octet.
Notes
Si vous recevez un SocketException, utilisez SocketException.ErrorCode pour obtenir le code d’erreur spécifique. Une fois ce code obtenu, vous pouvez vous reporter à la documentation du code d’erreur de l’API Windows Sockets version 2 pour obtenir une description détaillée de l’erreur.
Notes
Ce membre génère des informations de traçage lorsque vous activez le traçage réseau dans votre application. Pour plus d’informations, consultez Suivi réseau dans le .NET Framework.