Udostępnij za pośrednictwem


Socket.ConnectAsync Metoda

Definicja

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.

e
SocketAsyncEventArgs

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ą.

port wartość jest mniejsza niż MinPort.

-lub-

port wartość jest większa niż MaxPort.

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.

port wartość jest mniejsza niż MinPort.

-lub-

port wartość jest większa niż MaxPort.

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.

port wartość jest mniejsza niż MinPort.

-lub-

port wartość jest większa niż MaxPort.

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.

port wartość jest mniejsza niż MinPort.

-lub-

port wartość jest większa niż MaxPort.

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ą.

port wartość jest mniejsza niż MinPort.

-lub-

port wartość jest większa niż MaxPort.

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.

port wartość jest mniejsza niż MinPort.

-lub-

port wartość jest większa niż MaxPort.

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.

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

e
SocketAsyncEventArgs

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.

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ę .

Dotyczy