Socket.ConnectAsync Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Rozpoczyna asynchroniczne żądanie połączenia z hostem zdalnym.
Przeciążenia
ConnectAsync(SocketType, ProtocolType, SocketAsyncEventArgs) |
Rozpoczyna asynchroniczne żądanie połączenia z hostem zdalnym. |
ConnectAsync(IPAddress[], Int32, CancellationToken) |
Ustanawia połączenie z hostem zdalnym. |
ConnectAsync(String, Int32, CancellationToken) |
Ustanawia połączenie z hostem zdalnym. |
ConnectAsync(IPAddress, Int32, CancellationToken) |
Ustanawia połączenie z hostem zdalnym. |
ConnectAsync(String, Int32) |
Ustanawia połączenie z hostem zdalnym. |
ConnectAsync(IPAddress[], Int32) |
Ustanawia połączenie z hostem zdalnym. |
ConnectAsync(IPAddress, Int32) |
Ustanawia połączenie z hostem zdalnym. |
ConnectAsync(EndPoint, CancellationToken) |
Ustanawia połączenie z hostem zdalnym. |
ConnectAsync(SocketAsyncEventArgs) |
Rozpoczyna asynchroniczne żądanie połączenia z hostem zdalnym. |
ConnectAsync(EndPoint) |
Ustanawia połączenie z hostem zdalnym. |
ConnectAsync(SocketType, ProtocolType, SocketAsyncEventArgs)
- Źródło:
- Socket.cs
- Źródło:
- Socket.cs
- Źródło:
- Socket.cs
Rozpoczyna asynchroniczne żądanie połączenia z hostem zdalnym.
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
SocketType Jedna z wartości.
- protocolType
- ProtocolType
ProtocolType Jedna z wartości.
Obiekt SocketAsyncEventArgs do użycia dla tej operacji asynchronicznego gniazda.
Zwraca
true
jeśli operacja we/wy jest oczekująca. Zdarzenie Completed w parametrze e
zostanie podniesione po zakończeniu operacji.
false
jeśli operacja we/wy została ukończona synchronicznie. W takim przypadku Completed zdarzenie parametru e
nie zostanie zgłoszone, a e
obiekt przekazany jako parametr może zostać zbadany natychmiast po powrocie wywołania metody w celu pobrania wyniku operacji.
Wyjątki
Argument jest nieprawidłowy. Ten wyjątek występuje, jeśli określono wiele buforów, BufferList właściwość nie ma wartości null.
Parametr e
nie może mieć wartości null i RemoteEndPoint nie może mieć wartości null.
Operacja Socket nasłuchiwania lub gniazda była już w toku przy użyciu SocketAsyncEventArgs obiektu określonego w parametrze e
.
Wystąpił błąd podczas próby uzyskania dostępu do gniazda.
Lokalny punkt końcowy i nie RemoteEndPoint są tą samą rodziną adresów.
Element Socket został zamknięty.
Obiekt wywołujący wyżej w stosie wywołań nie ma uprawnień do żądanej operacji.
Uwagi
Jeśli używasz protokołu zorientowanego na połączenie, metoda M:System.Net.Sockets.Socket.ConnectAsync(System.Net.Sockets.SocketType,System.Net.Sockets.ProtocolType,System.Net.Sockets.Sockets.SocketAsyncEventArgs) uruchamia żądanie asynchroniczne dla połączenia z hostem zdalnym. Jeśli używasz protokołu bez połączenia, ConnectAsync ustanawia domyślny host zdalny określony przez socketType
parametry i protocolType
.
Aby uzyskać powiadomienie o zakończeniu, należy utworzyć metodę wywołania zwrotnego, która implementuje delegata EventHandler<SocketAsyncEventArgs> i dołączyć wywołanie zwrotne do SocketAsyncEventArgs.Completed zdarzenia.
Obiekt wywołujący musi ustawić SocketAsyncEventArgs.RemoteEndPoint właściwość na IPEndPoint hosta zdalnego, aby nawiązać połączenie.
Obiekt wywołujący może ustawić SocketAsyncEventArgs.UserToken właściwość na dowolny obiekt stanu użytkownika żądany przed wywołaniem ConnectAsync metody, aby informacje można było pobrać w metodzie wywołania zwrotnego. Jeśli wywołanie zwrotne wymaga więcej informacji niż pojedynczy obiekt, można utworzyć małą klasę do przechowywania innych wymaganych informacji o stanie jako elementów członkowskich.
Jeśli używasz protokołu bez połączenia, takiego jak UDP, nie musisz wywoływać ConnectAsync przed wysłaniem i odebraniem danych. Można używać poleceń SendToAsync i ReceiveFromAsync do komunikowania się z hostem zdalnym. Jeśli wywołasz ConnectAsyncmetodę , wszelkie datagramy, które docierają z adresu innego niż określona wartość domyślna, zostaną odrzucone. Jeśli chcesz zmienić domyślnego hosta zdalnego, wywołaj metodę ConnectAsync ponownie z żądanym punktem końcowym.
Jeśli chcesz ustawić domyślnego hosta zdalnego na adres emisji, musisz najpierw wywołać SetSocketOption i ustawić emisję na true
. Jeśli nie zostanie to zrobione, ConnectAsync metoda zgłosi wyjątek SocketException.
Wymagane są następujące właściwości i zdarzenia obiektu System.Net.Sockets.SocketAsyncEventArgs :
Opcjonalnie można podać bufor, który będzie niepodziealnie wysyłany do gniazda po pomyślnym wykonaniu ConnectAsync metody. W takim przypadku SocketAsyncEventArgs.Buffer właściwość musi być ustawiona na bufor zawierający dane do wysłania, a SocketAsyncEventArgs.Count właściwość musi być ustawiona na liczbę bajtów danych do wysłania z buforu. Po nawiązaniu połączenia ten bufor danych jest wysyłany.
Jeśli używasz protokołu zorientowanego na połączenie i nie wywołujesz Bind go przed wywołaniem ConnectAsyncmetody , podstawowy dostawca usług przypisze najbardziej odpowiedni lokalny adres sieciowy i numer portu.
Jeśli używasz protokołu bez połączenia, dostawca usług nie przypisze lokalnego adresu IP i numeru portu do momentu wywołania SendAsync metod lub ReceiveAsync .
Metoda ConnectAsync zgłasza, NotSupportedException jeśli rodzina adresów Socket i SocketAsyncEventArgs.RemoteEndPoint nie są tą samą rodziną adresów.
Uwaga
Jeśli podczas wywoływania tej metody wystąpi błąd SocketException , użyj SocketException.ErrorCode właściwości , aby uzyskać określony kod błędu. Po uzyskaniu tego kodu zapoznaj się z dokumentacją kodu błędu interfejsu API Windows Sockets w wersji 2 , aby uzyskać szczegółowy opis błędu.
Dotyczy
ConnectAsync(IPAddress[], Int32, CancellationToken)
- Źródło:
- Socket.Tasks.cs
- Źródło:
- Socket.Tasks.cs
- Źródło:
- Socket.Tasks.cs
Ustanawia połączenie z hostem zdalnym.
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[]
Lista adresów IPaddresses dla hosta zdalnego, który będzie używany do próby nawiązania połączenia z hostem zdalnym.
- port
- Int32
Port na hoście zdalnym do nawiązania połączenia.
- cancellationToken
- CancellationToken
Token anulowania, który może służyć do anulowania operacji asynchronicznej.
Zwraca
Zadanie asynchroniczne, które kończy się po nawiązaniu połączenia.
Wyjątki
Parametr addresses
nie może mieć wartości null.
Parametr addresses
nie może być pustą tablicą.
Nasłuchuje Socket .
Gniazdo nie znajduje się w rodzinach InterNetwork ani InterNetworkV6 .
Wystąpił błąd podczas próby uzyskania dostępu do gniazda.
Element Socket został zamknięty.
Obiekt wywołujący wyżej w stosie wywołań nie ma uprawnień do żądanej operacji.
Token anulowania został anulowany. Ten wyjątek jest przechowywany w zwracanym zadaniu.
Uwagi
Ta metoda jest przechowywana w zadaniu, które zwraca wszystkie wyjątki nieużytowe, które może zgłosić synchroniczna odpowiednik metody. Jeśli wyjątek jest przechowywany w zwracanym zadaniu, ten wyjątek zostanie zgłoszony podczas oczekiwania zadania. Wyjątki użycia, takie jak ArgumentException, są nadal zgłaszane synchronicznie. W przypadku przechowywanych wyjątków zobacz wyjątki zgłoszone przez Connect(IPAddress[], Int32)usługę .
Dotyczy
ConnectAsync(String, Int32, CancellationToken)
- Źródło:
- Socket.Tasks.cs
- Źródło:
- Socket.Tasks.cs
- Źródło:
- Socket.Tasks.cs
Ustanawia połączenie z hostem zdalnym.
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
Nazwa hosta zdalnego hosta do nawiązania połączenia.
- port
- Int32
Port na hoście zdalnym do nawiązania połączenia.
- cancellationToken
- CancellationToken
Token anulowania, który może służyć do anulowania operacji asynchronicznej.
Zwraca
Asynchroniczne zadanie, które kończy się po nawiązaniu połączenia.
Wyjątki
Parametr host
nie może mieć wartości null.
Nasłuchuje Socket .
Gniazdo nie znajduje się w rodzinach InterNetwork ani InterNetworkV6 .
Wystąpił błąd podczas próby uzyskania dostępu do gniazda.
Element Socket został zamknięty.
Obiekt wywołujący wyżej w stosie wywołań nie ma uprawnień do żądanej operacji.
Token anulowania został anulowany. Ten wyjątek jest przechowywany w zwracanym zadaniu.
Uwagi
Ta metoda jest przechowywana w zadaniu, które zwraca wszystkie wyjątki nieużytowe, które może zgłosić synchroniczna odpowiednik metody. Jeśli wyjątek jest przechowywany w zwracanym zadaniu, ten wyjątek zostanie zgłoszony podczas oczekiwania zadania. Wyjątki użycia, takie jak ArgumentException, są nadal zgłaszane synchronicznie. W przypadku przechowywanych wyjątków zobacz wyjątki zgłoszone przez Connect(String, Int32)usługę .
Dotyczy
ConnectAsync(IPAddress, Int32, CancellationToken)
- Źródło:
- Socket.Tasks.cs
- Źródło:
- Socket.Tasks.cs
- Źródło:
- Socket.Tasks.cs
Ustanawia połączenie z hostem zdalnym.
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
Adres IP hosta zdalnego do nawiązania połączenia.
- port
- Int32
Port na hoście zdalnym do nawiązania połączenia.
- cancellationToken
- CancellationToken
Token anulowania, który może służyć do anulowania operacji asynchronicznej.
Zwraca
Asynchroniczne zadanie, które kończy się po nawiązaniu połączenia.
Wyjątki
Parametr address
nie może mieć wartości null.
Nasłuchuje Socket .
Wystąpił błąd podczas próby uzyskania dostępu do gniazda.
Została zamknięta Socket .
Obiekt wywołujący wyższy w stosie wywołań nie ma uprawnień do żądanej operacji.
Token anulowania został anulowany. Ten wyjątek jest przechowywany w zwróconym zadaniu.
Uwagi
Ta metoda przechowuje w zadaniu wszystkie wyjątki inne niż użycie, które mogą zgłaszać synchroniczna odpowiednik metody. Jeśli wyjątek jest przechowywany w zwróconym zadaniu, ten wyjątek zostanie zgłoszony po oczekiwaniu na zadanie. Wyjątki użycia, takie jak ArgumentException, są nadal zgłaszane synchronicznie. Aby uzyskać informacje o przechowywanych wyjątkach, zobacz wyjątki zgłaszane przez Connect(IPAddress, Int32)usługę .
Dotyczy
ConnectAsync(String, Int32)
- Źródło:
- Socket.Tasks.cs
- Źródło:
- Socket.Tasks.cs
- Źródło:
- Socket.Tasks.cs
Ustanawia połączenie z hostem zdalnym.
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
Nazwa hosta hosta zdalnego do nawiązania połączenia.
- port
- Int32
Port na hoście zdalnym do nawiązania połączenia.
Zwraca
Asynchroniczne zadanie, które kończy się po nawiązaniu połączenia.
Wyjątki
Parametr host
nie może mieć wartości null.
Nasłuchuje Socket .
Gniazdo nie znajduje się w rodzinach InterNetwork ani InterNetworkV6 .
Wystąpił błąd podczas próby uzyskania dostępu do gniazda.
Została zamknięta Socket .
Obiekt wywołujący wyższy w stosie wywołań nie ma uprawnień do żądanej operacji.
Uwagi
Ta metoda przechowuje w zadaniu wszystkie wyjątki inne niż użycie, które mogą zgłaszać synchroniczna odpowiednik metody. Jeśli wyjątek jest przechowywany w zwróconym zadaniu, ten wyjątek zostanie zgłoszony po oczekiwaniu na zadanie. Wyjątki użycia, takie jak ArgumentException, są nadal zgłaszane synchronicznie. Aby uzyskać informacje o przechowywanych wyjątkach, zobacz wyjątki zgłaszane przez Connect(String, Int32)usługę .
Dotyczy
ConnectAsync(IPAddress[], Int32)
- Źródło:
- Socket.Tasks.cs
- Źródło:
- Socket.Tasks.cs
- Źródło:
- Socket.Tasks.cs
Ustanawia połączenie z hostem zdalnym.
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[]
Lista adresów IPAddresses dla hosta zdalnego, który będzie używany do próby nawiązania połączenia z hostem zdalnym.
- port
- Int32
Port na hoście zdalnym do nawiązania połączenia.
Zwraca
Asynchroniczne zadanie, które kończy się po nawiązaniu połączenia.
Wyjątki
Parametr addresses
nie może mieć wartości null.
Parametr nie może być pustą addresses
tablicą.
Nasłuchuje Socket .
Gniazdo nie znajduje się w rodzinach InterNetwork ani InterNetworkV6 .
Wystąpił błąd podczas próby uzyskania dostępu do gniazda.
Została zamknięta Socket .
Obiekt wywołujący wyższy w stosie wywołań nie ma uprawnień do żądanej operacji.
Uwagi
Ta metoda przechowuje w zadaniu wszystkie wyjątki inne niż użycie, które mogą zgłaszać synchroniczna odpowiednik metody. Jeśli wyjątek jest przechowywany w zwróconym zadaniu, ten wyjątek zostanie zgłoszony po oczekiwaniu na zadanie. Wyjątki użycia, takie jak ArgumentException, są nadal zgłaszane synchronicznie. Aby uzyskać informacje o przechowywanych wyjątkach, zobacz wyjątki zgłaszane przez Connect(IPAddress[], Int32)usługę .
Dotyczy
ConnectAsync(IPAddress, Int32)
- Źródło:
- Socket.Tasks.cs
- Źródło:
- Socket.Tasks.cs
- Źródło:
- Socket.Tasks.cs
Ustanawia połączenie z hostem zdalnym.
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
Adres IP hosta zdalnego do nawiązania połączenia.
- port
- Int32
Port na hoście zdalnym do nawiązania połączenia.
Zwraca
Asynchroniczne zadanie, które kończy się po nawiązaniu połączenia.
Wyjątki
Parametr address
nie może mieć wartości null.
Nasłuchuje Socket .
Gniazdo nie znajduje się w rodzinach InterNetwork ani InterNetworkV6 .
Wystąpił błąd podczas próby uzyskania dostępu do gniazda.
Została zamknięta Socket .
Obiekt wywołujący wyższy w stosie wywołań nie ma uprawnień do żądanej operacji.
Uwagi
Ta metoda przechowuje w zadaniu wszystkie wyjątki inne niż użycie, które mogą zgłaszać synchroniczna odpowiednik metody. Jeśli wyjątek jest przechowywany w zwróconym zadaniu, ten wyjątek zostanie zgłoszony po oczekiwaniu na zadanie. Wyjątki użycia, takie jak ArgumentException, są nadal zgłaszane synchronicznie. Aby uzyskać informacje o przechowywanych wyjątkach, zobacz wyjątki zgłaszane przez Connect(IPAddress, Int32)usługę .
Dotyczy
ConnectAsync(EndPoint, CancellationToken)
- Źródło:
- Socket.Tasks.cs
- Źródło:
- Socket.Tasks.cs
- Źródło:
- Socket.Tasks.cs
Ustanawia połączenie z hostem zdalnym.
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
Punkt końcowy do nawiązania połączenia.
- cancellationToken
- CancellationToken
Token anulowania, który może służyć do anulowania operacji asynchronicznej.
Zwraca
Asynchroniczne zadanie, które kończy się po nawiązaniu połączenia.
Wyjątki
Parametr remoteEP
nie może mieć wartości null.
Nasłuchuje Socket .
Wystąpił błąd podczas próby uzyskania dostępu do gniazda.
Lokalny punkt końcowy i remoteEP
parametr nie są tą samą rodziną adresów.
Została zamknięta Socket .
Obiekt wywołujący wyższy w stosie wywołań nie ma uprawnień do żądanej operacji.
Token anulowania został anulowany. Ten wyjątek jest przechowywany w zwróconym zadaniu.
Uwagi
Ta metoda przechowuje w zadaniu wszystkie wyjątki inne niż użycie, które mogą zgłaszać synchroniczna odpowiednik metody. Jeśli wyjątek jest przechowywany w zwróconym zadaniu, ten wyjątek zostanie zgłoszony po oczekiwaniu na zadanie. Wyjątki użycia, takie jak ArgumentException, są nadal zgłaszane synchronicznie. Aby uzyskać informacje o przechowywanych wyjątkach, zobacz wyjątki zgłaszane przez Connect(EndPoint)usługę .
Dotyczy
ConnectAsync(SocketAsyncEventArgs)
- Źródło:
- Socket.cs
- Źródło:
- Socket.cs
- Źródło:
- Socket.cs
Rozpoczyna asynchroniczne żądanie połączenia z hostem zdalnym.
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
Obiekt SocketAsyncEventArgs do użycia dla tej operacji asynchronicznego gniazda.
Zwraca
true
jeśli operacja we/wy jest oczekująca. Zdarzenie Completed parametru e
zostanie podniesione po zakończeniu operacji.
false
jeśli operacja we/wy została ukończona synchronicznie. W takim przypadku Completed zdarzenie parametru e
nie zostanie podniesione, a e
obiekt przekazany jako parametr może zostać zbadany natychmiast po powrocie wywołania metody w celu pobrania wyniku operacji.
Wyjątki
Argument jest nieprawidłowy. Ten wyjątek występuje, jeśli określono wiele buforów, BufferList właściwość nie ma wartości null.
Parametr e
nie może mieć wartości null i RemoteEndPoint nie może mieć wartości null.
Operacja Socket nasłuchiwania lub gniazda była już w toku przy użyciu SocketAsyncEventArgs obiektu określonego w parametrze e
.
Wystąpił błąd podczas próby uzyskania dostępu do gniazda.
Lokalny punkt końcowy i nie RemoteEndPoint są tą samą rodziną adresów.
Została zamknięta Socket .
Obiekt wywołujący wyższy w stosie wywołań nie ma uprawnień do żądanej operacji.
Uwagi
Jeśli używasz protokołu zorientowanego na połączenie, ConnectAsync metoda uruchamia asynchroniczne żądanie połączenia z hostem zdalnym. Jeśli używasz protokołu bez połączenia, ConnectAsync ustanawia domyślny host zdalny.
Aby otrzymywać powiadomienia o zakończeniu, należy utworzyć metodę wywołania zwrotnego, która implementuje delegata EventHandler<SocketAsyncEventArgs> i dołączyć wywołanie zwrotne do SocketAsyncEventArgs.Completed zdarzenia.
Obiekt wywołujący musi ustawić SocketAsyncEventArgs.RemoteEndPoint właściwość na IPEndPoint hosta zdalnego w celu nawiązania połączenia.
Obiekt wywołujący może ustawić SocketAsyncEventArgs.UserToken właściwość na dowolny obiekt stanu użytkownika żądany przed wywołaniem ConnectAsync metody, aby informacje mogły zostać pobrane w metodzie wywołania zwrotnego. Jeśli wywołanie zwrotne wymaga więcej informacji niż pojedynczy obiekt, można utworzyć małą klasę, aby przechowywać inne wymagane informacje o stanie jako elementy członkowskie.
Jeśli używasz protokołu bez połączenia, takiego jak UDP, nie musisz wywoływać przed ConnectAsync wysłaniem i odebraniem danych. Możesz użyć polecenia SendToAsync i ReceiveFromAsync nawiązać komunikację z hostem zdalnym. Jeśli wywołasz metodę ConnectAsync, wszystkie datagramy, które docierają z adresu innego niż określona wartość domyślna, zostaną odrzucone. Jeśli chcesz zmienić domyślny host zdalny, wywołaj ConnectAsync metodę ponownie przy użyciu żądanego punktu końcowego.
Jeśli chcesz ustawić domyślny host zdalny na adres emisji, musisz najpierw wywołać SetSocketOption i ustawić opcję Emisja na true
. Jeśli nie zostanie to zrobione, ConnectAsync metoda zgłosi błąd SocketException.
Wymagane są następujące właściwości i zdarzenia obiektu System.Net.Sockets.SocketAsyncEventArgs :
Opcjonalnie można po pomyślnym zakończeniu ConnectAsync metody dostarczyć bufor, który będzie niepodziealnie wysyłany do gniazda. W takim przypadku SocketAsyncEventArgs.Buffer właściwość musi być ustawiona na bufor zawierający dane do wysłania, a SocketAsyncEventArgs.Count właściwość musi być ustawiona na liczbę bajtów danych do wysłania z buforu. Po nawiązaniu połączenia ten bufor danych jest wysyłany.
Jeśli używasz protokołu zorientowanego na połączenie i nie wywołujesz przed wywołaniem BindConnectAsyncpołączenia, podstawowy dostawca usług przypisze najbardziej odpowiedni adres sieci lokalnej i numer portu.
Jeśli używasz protokołu bez połączenia, dostawca usług nie przypisze lokalnego adresu IP i numeru portu do momentu wywołania SendAsync metod lub ReceiveAsync .
Metoda ConnectAsync zgłasza wartość NotSupportedException , jeśli rodzina adresów Socket i nie SocketAsyncEventArgs.RemoteEndPoint są tą samą rodziną adresów.
Uwaga
Jeśli podczas wywoływania tej metody wystąpi błąd SocketException , użyj SocketException.ErrorCode właściwości , aby uzyskać określony kod błędu. Po uzyskaniu tego kodu zapoznaj się z dokumentacją kodu błędu interfejsu API gniazda systemu Windows w wersji 2 , aby uzyskać szczegółowy opis błędu.
Zobacz też
Dotyczy
ConnectAsync(EndPoint)
- Źródło:
- Socket.Tasks.cs
- Źródło:
- Socket.Tasks.cs
- Źródło:
- Socket.Tasks.cs
Ustanawia połączenie z hostem zdalnym.
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
Punkt końcowy do nawiązania połączenia.
Zwraca
Asynchroniczne zadanie, które kończy się po nawiązaniu połączenia.
Wyjątki
Parametr remoteEP
nie może mieć wartości null.
Nasłuchuje Socket .
Wystąpił błąd podczas próby uzyskania dostępu do gniazda.
Lokalny punkt końcowy i remoteEP
parametr nie są tą samą rodziną adresów.
Została zamknięta Socket .
Obiekt wywołujący wyższy w stosie wywołań nie ma uprawnień do żądanej operacji.
Uwagi
Ta metoda przechowuje w zadaniu wszystkie wyjątki inne niż użycie, które mogą zgłaszać synchroniczna odpowiednik metody. Jeśli wyjątek jest przechowywany w zwróconym zadaniu, ten wyjątek zostanie zgłoszony po oczekiwaniu na zadanie. Wyjątki użycia, takie jak ArgumentException, są nadal zgłaszane synchronicznie. Aby uzyskać informacje o przechowywanych wyjątkach, zobacz wyjątki zgłaszane przez Connect(EndPoint)usługę .