TcpClient.GetStream Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Vrátí použitou NetworkStream k odesílání a příjmu dat.
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
Návraty
NetworkStreamZákladní .
Výjimky
Není TcpClient připojen ke vzdálenému hostiteli.
Ta TcpClient byla uzavřena.
Příklady
Následující příklad kódu používá GetStream k získání základního NetworkStreamkódu . Po získání NetworkStream, odesílá a přijímá pomocí své Write a Read metody.
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
Poznámky
Metoda GetStream vrátí metodu NetworkStream , kterou můžete použít k odesílání a přijímání dat. Třída NetworkStream dědí z Stream třídy, která poskytuje bohatou kolekci metod a vlastností sloužících k usnadnění síťové komunikace.
Nejprve je nutné volat metodu Connect , nebo metoda GetStream vyvolá výjimku InvalidOperationException. Poté, co jste získali NetworkStream, zavolejte metodu Write pro odesílání dat vzdálenému hostiteli. Zavolejte metodu Read pro příjem dat přicházejících ze vzdáleného hostitele. Obě tyto metody blokují, dokud se neprovede zadaná operace. Blokování operace čtení můžete zabránit tím, že zkontrolujete DataAvailable vlastnost. Hodnota true znamená, že data přišla ze vzdáleného hostitele a je k dispozici pro čtení. V tomto případě je zaručeno, Read že se dokončí okamžitě. Pokud vzdálený hostitel vypne připojení, Read okamžitě se vrátí s nulovými bajty.
Poznámka:
Pokud se zobrazí SocketExceptionkód chyby, použijte SocketException.ErrorCode ho k získání konkrétního kódu chyby. Jakmile tento kód získáte, můžete se podívat do dokumentace k chybě rozhraní API verze 2 rozhraní Windows Sockets , kde najdete podrobný popis chyby.
Poznámka:
Tento člen vypíše informace o trasování, když ve své aplikaci povolíte trasování sítě. Další informace naleznete v tématu Trasování sítě v rozhraní .NET Framework.