TcpClient.GetStream Metod
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Returnerar den NetworkStream som används för att skicka och ta emot data.
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
Returer
Den underliggande NetworkStream.
Undantag
TcpClient Är inte ansluten till en fjärrvärd.
Har TcpClient stängts.
Exempel
I följande kodexempel används GetStream för att hämta den underliggande NetworkStream. När du har hämtat NetworkStreamskickar och tar den emot med hjälp av dess Write och Read metoder.
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
Kommentarer
Metoden GetStream returnerar en NetworkStream som du kan använda för att skicka och ta emot data. Klassen NetworkStream ärver från Stream klassen, vilket ger en omfattande samling metoder och egenskaper som används för att underlätta nätverkskommunikation.
Du måste anropa Connect metoden först, annars GetStream genererar metoden en InvalidOperationException. När du har hämtat NetworkStreamanropar Write du metoden för att skicka data till fjärrvärden.
Read Anropa metoden för att ta emot data som kommer från fjärrvärden. Båda dessa metoder blockeras tills den angivna åtgärden har utförts. Du kan undvika att blockera en läsåtgärd genom att kontrollera egenskapen DataAvailable . Ett true värde innebär att data har anlänt från fjärrvärden och är tillgängliga för läsning. I det här fallet Read är garanterat att slutföras omedelbart. Om fjärrvärden har stängt av anslutningen Read returneras omedelbart med noll byte.
Note
Om du får en SocketExceptionanvänder SocketException.ErrorCode du för att hämta den specifika felkoden. När du har fått den här koden kan du läsa felkoden Windows Sockets version 2 för en detaljerad beskrivning av felet.
Note
Den här medlemmen matar ut spårningsinformation när du aktiverar nätverksspårning i ditt program. Mer information finns i Network Tracing i .NET Framework.