Socket.ConnectAsync Metoda

Definice

Zahájí asynchronní požadavek na připojení ke vzdálenému hostiteli.

Přetížení

ConnectAsync(String, Int32, CancellationToken)

Vytvoří připojení ke vzdálenému hostiteli.

ConnectAsync(SocketType, ProtocolType, SocketAsyncEventArgs)

Zahájí asynchronní požadavek na připojení ke vzdálenému hostiteli.

ConnectAsync(IPAddress[], Int32, CancellationToken)

Vytvoří připojení ke vzdálenému hostiteli.

ConnectAsync(IPAddress, Int32, CancellationToken)

Vytvoří připojení ke vzdálenému hostiteli.

ConnectAsync(String, Int32)

Vytvoří připojení ke vzdálenému hostiteli.

ConnectAsync(IPAddress[], Int32)

Vytvoří připojení ke vzdálenému hostiteli.

ConnectAsync(IPAddress, Int32)

Vytvoří připojení ke vzdálenému hostiteli.

ConnectAsync(EndPoint, CancellationToken)

Vytvoří připojení ke vzdálenému hostiteli.

ConnectAsync(SocketAsyncEventArgs)

Zahájí asynchronní požadavek na připojení ke vzdálenému hostiteli.

ConnectAsync(EndPoint)

Vytvoří připojení ke vzdálenému hostiteli.

ConnectAsync(String, Int32, CancellationToken)

Vytvoří připojení ke vzdálenému hostiteli.

public:
 System::Threading::Tasks::ValueTask ConnectAsync(System::String ^ host, int port, System::Threading::CancellationToken cancellationToken);
public System.Threading.Tasks.ValueTask ConnectAsync (string host, int port, System.Threading.CancellationToken cancellationToken);
member this.ConnectAsync : string * int * System.Threading.CancellationToken -> System.Threading.Tasks.ValueTask
Public Function ConnectAsync (host As String, port As Integer, cancellationToken As CancellationToken) As ValueTask

Parametry

host
String

Název hostitele vzdáleného hostitele, ke kterému se chcete připojit.

port
Int32

Port vzdáleného hostitele, ke kterému se chcete připojit.

cancellationToken
CancellationToken

Token zrušení, který lze použít k zrušení asynchronní operace.

Návraty

ValueTask

Asynchronní úloha, která se dokončí při navázání připojení.

Platí pro

ConnectAsync(SocketType, ProtocolType, SocketAsyncEventArgs)

Zahájí asynchronní požadavek na připojení ke vzdálenému hostiteli.

public:
 static bool ConnectAsync(System::Net::Sockets::SocketType socketType, System::Net::Sockets::ProtocolType protocolType, System::Net::Sockets::SocketAsyncEventArgs ^ e);
public static bool ConnectAsync (System.Net.Sockets.SocketType socketType, System.Net.Sockets.ProtocolType protocolType, System.Net.Sockets.SocketAsyncEventArgs e);
static member ConnectAsync : System.Net.Sockets.SocketType * System.Net.Sockets.ProtocolType * System.Net.Sockets.SocketAsyncEventArgs -> bool
Public Shared Function ConnectAsync (socketType As SocketType, protocolType As ProtocolType, e As SocketAsyncEventArgs) As Boolean

Parametry

socketType
SocketType

Jedna z SocketType hodnot.

protocolType
ProtocolType

Jedna z ProtocolType hodnot.

e
SocketAsyncEventArgs

Objekt SocketAsyncEventArgs , který se má použít pro tuto asynchronní operaci soketu.

Návraty

Boolean

true pokud operace vstupně-výstupní operace čeká na vyřízení. Událost Completed parametru e se vyvolá po dokončení operace.

false pokud se operace vstupně-výstupní operace dokončila synchronně. V tomto případě se Completed událost parametru e nevyvolá a e objekt předaný jako parametr může být prozkoumán okamžitě po volání metody, aby se načetl výsledek operace.

Výjimky

Argument není platný. K této výjimce dochází v případě, že je zadáno více vyrovnávacích pamětí, BufferList vlastnost není null.

Parametr e nemůže být null a RemoteEndPoint nemůže mít hodnotu null.

Operace Socket naslouchání nebo operace soketu již probíhá pomocí objektu SocketAsyncEventArgs zadaného v parametru e .

Při pokusu o přístup k soketu došlo k chybě.

pro tuto metodu se vyžaduje Windows XP nebo novější. K této výjimce dochází také v případě, že místní koncový bod a RemoteEndPoint není stejná řada adres.

Volající vyšší v zásobníku volání nemá oprávnění k požadované operaci.

Poznámky

Pokud používáte protokol orientovaný na připojení, metoda M:System.Net.Sockets.Socket.ConnectAsync(System.Net.Sockets.SocketType,System.Net.Sockets.ProtocolType,System.Net.Sockets.SocketAsyncEventArgs) spustí asynchronní požadavek na připojení ke vzdálenému hostiteli. Pokud používáte protokol bez připojení, ConnectAsync naváže výchozí vzdálený hostitel určený socketType parametry.protocolType

Chcete-li být upozorněni na dokončení, musíte vytvořit metodu zpětného volání, která implementuje delegáta EventHandler<SocketAsyncEventArgs> a připojí zpětné volání k SocketAsyncEventArgs.Completed události.

Volající musí vlastnost nastavit SocketAsyncEventArgs.RemoteEndPoint na IPEndPoint vzdáleného hostitele, ke kterému se má připojit.

Volající může vlastnost nastavit SocketAsyncEventArgs.UserToken na libovolný objekt stavu uživatele požadovaný před voláním ConnectAsync metody, aby se informace mohly načíst v metodě zpětného volání. Pokud zpětné volání potřebuje více informací než jeden objekt, lze vytvořit malou třídu, která bude obsahovat další požadované informace o stavu jako členy.

Pokud používáte protokol bez připojení, jako je UDP, nemusíte volat ConnectAsync před odesláním a příjmem dat. Můžete použít SendToAsync a ReceiveFromAsync komunikovat se vzdáleným hostitelem. Pokud zavoláte ConnectAsync, všechny datovégramy, které přicházejí z jiné adresy než zadané výchozí, se zahodí. Pokud chcete změnit výchozího vzdáleného hostitele, zavolejte metodu ConnectAsync znovu s požadovaným koncovým bodem.

Pokud chcete nastavit výchozího vzdáleného hostitele na adresu vysílání, musíte nejprve zavolat SetSocketOption a nastavit Všesměrové vysílání na true. Pokud to není hotové, ConnectAsync metoda vyvolá SocketException.

Jsou vyžadovány následující vlastnosti a události objektu System.Net.Sockets.SocketAsyncEventArgs :

Volitelně lze poskytnout vyrovnávací paměť, která se bude atomicky odesílat na soketu po ConnectAsync úspěšném provedení metody. V tomto případě SocketAsyncEventArgs.Buffer musí být vlastnost nastavena na vyrovnávací paměť obsahující data k odeslání a SocketAsyncEventArgs.Count vlastnost musí být nastavena na počet bajtů dat, která se mají odeslat z vyrovnávací paměti. Po navázání připojení se tato vyrovnávací paměť dat odešle.

Pokud používáte protokol orientovaný na připojení a nezavoláte ho před voláním Bind ConnectAsync, přiřadí poskytovatel základní služby nejvhodnější adresu místní sítě a číslo portu.

Pokud používáte protokol bez připojení, poskytovatel služeb nepřiřazuje IP adresu místní sítě a číslo portu, dokud nevoláte SendAsync nebo ReceiveAsync metody.

Metoda ConnectAsync vyvolá NotSupportedException , pokud rodina Socket adres a SocketAsyncEventArgs.RemoteEndPoint není stejná rodina adres.

Poznámka

Pokud se při volání této metody zobrazí SocketException chyba, použijte SocketException.ErrorCode vlastnost k získání konkrétního kódu chyby. Po získání tohoto kódu si projděte dokumentaci k chybě rozhraní API verze Windows Sockets verze 2, kde najdete podrobný popis chyby.

Platí pro

ConnectAsync(IPAddress[], Int32, CancellationToken)

Vytvoří připojení ke vzdálenému hostiteli.

public:
 System::Threading::Tasks::ValueTask ConnectAsync(cli::array <System::Net::IPAddress ^> ^ addresses, int port, System::Threading::CancellationToken cancellationToken);
public System.Threading.Tasks.ValueTask ConnectAsync (System.Net.IPAddress[] addresses, int port, System.Threading.CancellationToken cancellationToken);
member this.ConnectAsync : System.Net.IPAddress[] * int * System.Threading.CancellationToken -> System.Threading.Tasks.ValueTask
Public Function ConnectAsync (addresses As IPAddress(), port As Integer, cancellationToken As CancellationToken) As ValueTask

Parametry

addresses
IPAddress[]

Seznam IPAddresses pro vzdáleného hostitele, který se použije k pokusu o připojení ke vzdálenému hostiteli.

port
Int32

Port vzdáleného hostitele, ke kterému se chcete připojit.

cancellationToken
CancellationToken

Token zrušení, který lze použít k zrušení asynchronní operace.

Návraty

ValueTask

Asynchronní úloha, která se dokončí při navázání připojení.

Platí pro

ConnectAsync(IPAddress, Int32, CancellationToken)

Vytvoří připojení ke vzdálenému hostiteli.

public:
 System::Threading::Tasks::ValueTask ConnectAsync(System::Net::IPAddress ^ address, int port, System::Threading::CancellationToken cancellationToken);
public System.Threading.Tasks.ValueTask ConnectAsync (System.Net.IPAddress address, int port, System.Threading.CancellationToken cancellationToken);
member this.ConnectAsync : System.Net.IPAddress * int * System.Threading.CancellationToken -> System.Threading.Tasks.ValueTask
Public Function ConnectAsync (address As IPAddress, port As Integer, cancellationToken As CancellationToken) As ValueTask

Parametry

address
IPAddress

IPAddress vzdáleného hostitele pro připojení.

port
Int32

Port vzdáleného hostitele, ke kterému se chcete připojit.

cancellationToken
CancellationToken

Token zrušení, který lze použít k zrušení asynchronní operace.

Návraty

ValueTask

Asynchronní úloha, která se dokončí při navázání připojení.

Platí pro

ConnectAsync(String, Int32)

Vytvoří připojení ke vzdálenému hostiteli.

public:
 System::Threading::Tasks::Task ^ ConnectAsync(System::String ^ host, int port);
public System.Threading.Tasks.Task ConnectAsync (string host, int port);
member this.ConnectAsync : string * int -> System.Threading.Tasks.Task
Public Function ConnectAsync (host As String, port As Integer) As Task

Parametry

host
String

Název hostitele vzdáleného hostitele, ke kterému se chcete připojit.

port
Int32

Port vzdáleného hostitele, ke kterému se chcete připojit.

Návraty

Task

Asynchronní úloha, která se dokončí při navázání připojení.

Platí pro

ConnectAsync(IPAddress[], Int32)

Vytvoří připojení ke vzdálenému hostiteli.

public:
 System::Threading::Tasks::Task ^ ConnectAsync(cli::array <System::Net::IPAddress ^> ^ addresses, int port);
public System.Threading.Tasks.Task ConnectAsync (System.Net.IPAddress[] addresses, int port);
member this.ConnectAsync : System.Net.IPAddress[] * int -> System.Threading.Tasks.Task
Public Function ConnectAsync (addresses As IPAddress(), port As Integer) As Task

Parametry

addresses
IPAddress[]

Seznam IPAddresses pro vzdáleného hostitele, který se použije k pokusu o připojení ke vzdálenému hostiteli.

port
Int32

Port vzdáleného hostitele, ke kterému se chcete připojit.

Návraty

Task

Asynchronní úloha, která se dokončí při navázání připojení.

Platí pro

ConnectAsync(IPAddress, Int32)

Vytvoří připojení ke vzdálenému hostiteli.

public:
 System::Threading::Tasks::Task ^ ConnectAsync(System::Net::IPAddress ^ address, int port);
public System.Threading.Tasks.Task ConnectAsync (System.Net.IPAddress address, int port);
member this.ConnectAsync : System.Net.IPAddress * int -> System.Threading.Tasks.Task
Public Function ConnectAsync (address As IPAddress, port As Integer) As Task

Parametry

address
IPAddress

IPAddress vzdáleného hostitele pro připojení.

port
Int32

Port vzdáleného hostitele, ke kterému se chcete připojit.

Návraty

Task

Asynchronní úloha, která se dokončí při navázání připojení.

Platí pro

ConnectAsync(EndPoint, CancellationToken)

Vytvoří připojení ke vzdálenému hostiteli.

public:
 System::Threading::Tasks::ValueTask ConnectAsync(System::Net::EndPoint ^ remoteEP, System::Threading::CancellationToken cancellationToken);
public System.Threading.Tasks.ValueTask ConnectAsync (System.Net.EndPoint remoteEP, System.Threading.CancellationToken cancellationToken);
member this.ConnectAsync : System.Net.EndPoint * System.Threading.CancellationToken -> System.Threading.Tasks.ValueTask
Public Function ConnectAsync (remoteEP As EndPoint, cancellationToken As CancellationToken) As ValueTask

Parametry

remoteEP
EndPoint

Koncový bod, ke kterému se chcete připojit.

cancellationToken
CancellationToken

Token zrušení, který lze použít k zrušení asynchronní operace.

Návraty

ValueTask

Asynchronní úloha, která se dokončí při navázání připojení.

Platí pro

ConnectAsync(SocketAsyncEventArgs)

Zahájí asynchronní požadavek na připojení ke vzdálenému hostiteli.

public:
 bool ConnectAsync(System::Net::Sockets::SocketAsyncEventArgs ^ e);
public bool ConnectAsync (System.Net.Sockets.SocketAsyncEventArgs e);
member this.ConnectAsync : System.Net.Sockets.SocketAsyncEventArgs -> bool
Public Function ConnectAsync (e As SocketAsyncEventArgs) As Boolean

Parametry

e
SocketAsyncEventArgs

Objekt SocketAsyncEventArgs , který se má použít pro tuto asynchronní operaci soketu.

Návraty

Boolean

true pokud operace vstupně-výstupní operace čeká na vyřízení. Událost Completed parametru e se vyvolá po dokončení operace.

false pokud se vstupně-výstupní operace dokončila synchronně. V tomto případě Completed se událost parametru e nevyvolá a e objekt předaný jako parametr může být zkoumán okamžitě po volání metody, aby se načetl výsledek operace.

Výjimky

Argument není platný. K této výjimce dochází v případě, že je zadáno více vyrovnávacích pamětí, BufferList vlastnost není null.

Parametr e nemůže být null a RemoteEndPoint nemůže mít hodnotu null.

Operace Socket naslouchání nebo operace soketu již probíhá pomocí objektu SocketAsyncEventArgs zadaného v parametru e .

Při pokusu o přístup k soketu došlo k chybě.

pro tuto metodu se vyžaduje Windows XP nebo novější. K této výjimce dochází také v případě, že místní koncový bod a RemoteEndPoint není stejná řada adres.

Volající vyšší v zásobníku volání nemá oprávnění k požadované operaci.

Poznámky

Pokud používáte protokol orientovaný na připojení, ConnectAsync metoda spustí asynchronní požadavek na připojení ke vzdálenému hostiteli. Pokud používáte protokol bez připojení, ConnectAsync naváže se výchozí vzdálený hostitel.

Chcete-li být upozorněni na dokončení, musíte vytvořit metodu zpětného volání, která implementuje delegáta EventHandler<SocketAsyncEventArgs> a připojit zpětné volání k SocketAsyncEventArgs.Completed události.

Volající musí vlastnost nastavit SocketAsyncEventArgs.RemoteEndPoint na IPEndPoint vzdáleného hostitele, ke kterému se má připojit.

Volající může vlastnost nastavit SocketAsyncEventArgs.UserToken na libovolný objekt stavu uživatele požadovaný před voláním ConnectAsync metody, takže informace budou v metodě zpětného volání k načtení. Pokud zpětné volání potřebuje více informací než jeden objekt, lze vytvořit malou třídu, která bude obsahovat další požadované informace o stavu jako členy.

Pokud používáte protokol bez připojení, jako je UDP, nemusíte volat ConnectAsync před odesíláním a přijímáním dat. Můžete použít SendToAsync a ReceiveFromAsync komunikovat se vzdáleným hostitelem. Pokud zavoláte ConnectAsync, všechny datovégramy, které přicházejí z jiné adresy, než je zadaná výchozí hodnota, se zahodí. Pokud chcete změnit výchozího vzdáleného hostitele, zavolejte metodu ConnectAsync znovu s požadovaným koncovým bodem.

Pokud chcete nastavit výchozího vzdáleného hostitele na adresu vysílání, musíte nejprve zavolat SetSocketOption a nastavit Všesměrové vysílání na true. Pokud to není hotové, ConnectAsync metoda vyvolá SocketException.

Jsou vyžadovány následující vlastnosti a události objektu System.Net.Sockets.SocketAsyncEventArgs :

Volitelně lze poskytnout vyrovnávací paměť, která se bude atomicky odesílat na soketu po ConnectAsync úspěšném provedení metody. V tomto případě SocketAsyncEventArgs.Buffer musí být vlastnost nastavena na vyrovnávací paměť obsahující data k odeslání a SocketAsyncEventArgs.Count vlastnost musí být nastavena na počet bajtů dat, která se mají odeslat z vyrovnávací paměti. Po navázání připojení se tato vyrovnávací paměť dat odešle.

Pokud používáte protokol orientovaný na připojení a nezavoláte ho před voláním Bind ConnectAsync, přiřadí poskytovatel základní služby nejvhodnější adresu místní sítě a číslo portu.

Pokud používáte protokol bez připojení, poskytovatel služeb nepřiřazuje IP adresu místní sítě a číslo portu, dokud nevoláte SendAsync nebo ReceiveAsync metody.

Metoda ConnectAsync vyvolá NotSupportedException , pokud rodina Socket adres a SocketAsyncEventArgs.RemoteEndPoint není stejná rodina adres.

Poznámka

Pokud se při volání této metody zobrazí SocketException chyba, použijte SocketException.ErrorCode vlastnost k získání konkrétního kódu chyby. Po získání tohoto kódu si projděte dokumentaci k chybě rozhraní API verze Windows Sockets verze 2, kde najdete podrobný popis chyby.

Viz také

Platí pro

ConnectAsync(EndPoint)

Vytvoří připojení ke vzdálenému hostiteli.

public:
 System::Threading::Tasks::Task ^ ConnectAsync(System::Net::EndPoint ^ remoteEP);
public System.Threading.Tasks.Task ConnectAsync (System.Net.EndPoint remoteEP);
member this.ConnectAsync : System.Net.EndPoint -> System.Threading.Tasks.Task
Public Function ConnectAsync (remoteEP As EndPoint) As Task

Parametry

remoteEP
EndPoint

Koncový bod, ke kterému se chcete připojit.

Návraty

Task

Asynchronní úloha, která se dokončí při navázání připojení.

Platí pro