Socket.ConnectAsync Метод

Определение

Начинает выполнение асинхронного запроса для подключения к удаленному узлу.

Перегрузки

ConnectAsync(String, Int32, CancellationToken)

Устанавливает подключение к удаленному узлу.

ConnectAsync(SocketType, ProtocolType, SocketAsyncEventArgs)

Начинает выполнение асинхронного запроса для подключения к удаленному узлу.

ConnectAsync(IPAddress[], Int32, CancellationToken)

Устанавливает подключение к удаленному узлу.

ConnectAsync(IPAddress, Int32, CancellationToken)

Устанавливает подключение к удаленному узлу.

ConnectAsync(String, Int32)

Устанавливает подключение к удаленному узлу.

ConnectAsync(SocketAsyncEventArgs)

Начинает выполнение асинхронного запроса для подключения к удаленному узлу.

ConnectAsync(IPAddress, Int32)

Устанавливает подключение к удаленному узлу.

ConnectAsync(EndPoint)

Устанавливает подключение к удаленному узлу.

ConnectAsync(IPAddress[], Int32)

Устанавливает подключение к удаленному узлу.

ConnectAsync(EndPoint, CancellationToken)

Устанавливает подключение к удаленному узлу.

ConnectAsync(String, Int32, CancellationToken)

Устанавливает подключение к удаленному узлу.

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

Параметры

host
String

Имя узла удаленного узла, к которому необходимо подключиться.

port
Int32

Порт на удаленном узле, к которому необходимо подключиться.

cancellationToken
CancellationToken

Токен отмены, который можно использовать для отмены асинхронной операции.

Возвращаемое значение

ValueTask

Асинхронная задача, которая завершается при установке соединения.

Применяется к

ConnectAsync(SocketType, ProtocolType, SocketAsyncEventArgs)

Начинает выполнение асинхронного запроса для подключения к удаленному узлу.

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

Параметры

socketType
SocketType

Одно из значений перечисления SocketType.

protocolType
ProtocolType

Одно из значений перечисления ProtocolType.

e
SocketAsyncEventArgs

Объект SocketAsyncEventArgs для использования в данной асинхронной операции сокета.

Возвращаемое значение

Boolean

true, если операция ввода-вывода находится в состоянии ожидания. По завершении операции создается событие Completed в параметре e.

false, если операция ввода-вывода завершена синхронно. В данном случае событие Completed на параметре e не будет создано и объект e, передаваемый как параметр, можно изучить сразу после получения результатов вызова метода для извлечения результатов операции.

Исключения

Аргумент является недопустимым. Это исключение возникает, если задано несколько буферов, свойство BufferList не имеет значение "null".

Параметр e и RemoteEndPoint не могут иметь значение NULL.

Socket ведет прослушивание или работа с сокетом уже выполняется с использованием объекта SocketAsyncEventArgs, указанного параметром e.

Произошла ошибка при попытке доступа к сокету.

Этот метод доступен только в Windows XP и более поздних версиях. Это исключение возникает также в том случае, если локальная конечная точка и объект RemoteEndPoint не принадлежат к одному семейству адресов.

Socket был закрыт.

Вызывающий объект, находящийся выше в стеке вызовов, не имеет разрешения на запрошенную операцию.

Комментарии

Если используется протокол, ориентированный на соединение, метод М:систем.нет.соккетс.соккет.коннектасинк (System .NET. Sockets. Соккеттипе, System .NET. Sockets. ProtocolType, System .NET. Sockets. SocketAsyncEventArgs) запускает асинхронный запрос на подключение к удаленному узлу. Если используется протокол без подключения, ConnectAsync устанавливает удаленный узел по умолчанию, заданный socketType protocolType параметрами и.

Чтобы получать уведомления о завершении, необходимо создать метод обратного вызова, реализующий <SocketAsyncEventArgs> делегат EventHandler, и присоединить обратный вызов к SocketAsyncEventArgs.Completed событию.

Вызывающий объект должен задать SocketAsyncEventArgs.RemoteEndPoint свойство для удаленного узла, к которому IPEndPoint необходимо подключиться.

Вызывающая сторона может задать SocketAsyncEventArgs.UserToken для свойства любой объект пользовательского состояния, необходимый перед вызовом ConnectAsync метода, чтобы информация была извлечена в методе обратного вызова. Если для обратного вызова требуется больше сведений, чем для одного объекта, можно создать небольшой класс для хранения других требуемых сведений о состоянии в качестве членов.

Если используется протокол без установления соединения, например UDP, нет необходимости вызывать метод ConnectAsync перед отправкой и получением данных. SendToAsync ReceiveFromAsync Для взаимодействия с удаленным узлом можно использовать и. При вызове ConnectAsync все датаграммы, поступающие с адреса, отличного от указанного по умолчанию, будут удалены. Если вы хотите изменить удаленный узел по умолчанию, вызовите ConnectAsync метод еще раз с нужной конечной точкой.

Если вы хотите задать для удаленного узла по умолчанию широковещательный адрес, необходимо сначала вызвать SetSocketOption и установить параметр Broadcast в true . Если это не сделано, ConnectAsync метод вызовет исключение SocketException .

Для объекта требуются следующие свойства и события System.Net.Sockets.SocketAsyncEventArgs :

При необходимости можно указать буфер, который будет атомарно отправлен на сокет после того, как ConnectAsync метод завершится с ошибкой. В этом случае SocketAsyncEventArgs.Buffer свойство должно быть установлено в буфер, содержащий отправляемые данные, а SocketAsyncEventArgs.Count свойство должно иметь значение, равное числу байтов данных, отправляемых из буфера. После установления соединения отправляется этот буфер данных.

Если вы используете протокол, ориентированный на подключение, и не вызываете Bind перед вызовом ConnectAsync , базовый поставщик услуг присвоит наиболее подходящий локальный сетевой адрес и номер порта.

Если используется протокол без установления соединения, поставщик услуг не будет назначать IP-адрес и номер порта локальной сети до тех пор, пока не будут вызваны SendAsync ReceiveAsync методы или.

ConnectAsyncМетод вызывает исключение, NotSupportedException Если семейство адресов Socket и SocketAsyncEventArgs.RemoteEndPoint не совпадает с семейством адресов.

Примечание

При получении сообщения SocketException при вызове этого метода используйте SocketException.ErrorCode свойство для получения конкретного кода ошибки. после получения этого кода ознакомьтесь с подробным описанием ошибки в документации по коду ошибки API Windows sockets версии 2 .

Применяется к

ConnectAsync(IPAddress[], Int32, CancellationToken)

Устанавливает подключение к удаленному узлу.

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

Параметры

addresses
IPAddress[]

Список IPAddresses для удаленного узла, который будет использоваться для попытки подключения к удаленному узлу.

port
Int32

Порт на удаленном узле, к которому необходимо подключиться.

cancellationToken
CancellationToken

Токен отмены, который можно использовать для отмены асинхронной операции.

Возвращаемое значение

ValueTask

Асинхронная задача, которая завершается при установке соединения.

Применяется к

ConnectAsync(IPAddress, Int32, CancellationToken)

Устанавливает подключение к удаленному узлу.

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

Параметры

address
IPAddress

IPAddress удаленного узла, к которому необходимо подключиться.

port
Int32

Порт на удаленном узле, к которому необходимо подключиться.

cancellationToken
CancellationToken

Токен отмены, который можно использовать для отмены асинхронной операции.

Возвращаемое значение

ValueTask

Асинхронная задача, которая завершается при установке соединения.

Применяется к

ConnectAsync(String, Int32)

Устанавливает подключение к удаленному узлу.

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

Параметры

host
String

Имя узла удаленного узла, к которому необходимо подключиться.

port
Int32

Порт на удаленном узле, к которому необходимо подключиться.

Возвращаемое значение

Task

Асинхронная задача, которая завершается при установке соединения.

Применяется к

ConnectAsync(SocketAsyncEventArgs)

Начинает выполнение асинхронного запроса для подключения к удаленному узлу.

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

Параметры

e
SocketAsyncEventArgs

Объект SocketAsyncEventArgs для использования в данной асинхронной операции сокета.

Возвращаемое значение

Boolean

true, если операция ввода-вывода находится в состоянии ожидания. По завершении операции создается событие Completed в параметре e.

false, если операция ввода-вывода завершена синхронно. В данном случае событие Completed на параметре e не будет создано и объект e, передаваемый как параметр, можно изучить сразу после получения результатов вызова метода для извлечения результатов операции.

Исключения

Аргумент является недопустимым. Это исключение возникает, если задано несколько буферов, свойство BufferList не имеет значение "null".

Параметр e и RemoteEndPoint не могут иметь значение NULL.

Socket ведет прослушивание или работа с сокетом уже выполняется с использованием объекта SocketAsyncEventArgs, указанного параметром e.

Произошла ошибка при попытке доступа к сокету.

Этот метод доступен только в Windows XP и более поздних версиях. Это исключение возникает также в том случае, если локальная конечная точка и объект RemoteEndPoint не принадлежат к одному семейству адресов.

Socket был закрыт.

Вызывающий объект, находящийся выше в стеке вызовов, не имеет разрешения на запрошенную операцию.

Комментарии

При использовании протокола, ориентированного на соединение, ConnectAsync метод запускает асинхронный запрос подключения к удаленному узлу. Если используется протокол без подключения, ConnectAsync устанавливает удаленный узел по умолчанию.

Чтобы получать уведомления о завершении, необходимо создать метод обратного вызова, реализующий <SocketAsyncEventArgs> делегат EventHandler, и присоединить обратный вызов к SocketAsyncEventArgs.Completed событию.

Вызывающий объект должен задать SocketAsyncEventArgs.RemoteEndPoint свойство для удаленного узла, к которому IPEndPoint необходимо подключиться.

Вызывающая сторона может задать SocketAsyncEventArgs.UserToken для свойства любой объект пользовательского состояния, необходимый перед вызовом ConnectAsync метода, чтобы информация была извлечена в методе обратного вызова. Если для обратного вызова требуется больше сведений, чем для одного объекта, можно создать небольшой класс для хранения других требуемых сведений о состоянии в качестве членов.

Если используется протокол без установления соединения, например UDP, нет необходимости вызывать метод ConnectAsync перед отправкой и получением данных. SendToAsync ReceiveFromAsync Для взаимодействия с удаленным узлом можно использовать и. При вызове ConnectAsync все датаграммы, поступающие с адреса, отличного от указанного по умолчанию, будут удалены. Если вы хотите изменить удаленный узел по умолчанию, вызовите ConnectAsync метод еще раз с нужной конечной точкой.

Если вы хотите задать для удаленного узла по умолчанию широковещательный адрес, необходимо сначала вызвать SetSocketOption и установить параметр Broadcast в true . Если это не сделано, ConnectAsync метод вызовет исключение SocketException .

Для объекта требуются следующие свойства и события System.Net.Sockets.SocketAsyncEventArgs :

При необходимости можно указать буфер, который будет атомарно отправлен на сокет после того, как ConnectAsync метод завершится с ошибкой. В этом случае SocketAsyncEventArgs.Buffer свойство должно быть установлено в буфер, содержащий отправляемые данные, а SocketAsyncEventArgs.Count свойство должно иметь значение, равное числу байтов данных, отправляемых из буфера. После установления соединения отправляется этот буфер данных.

Если вы используете протокол, ориентированный на подключение, и не вызываете Bind перед вызовом ConnectAsync , базовый поставщик услуг присвоит наиболее подходящий локальный сетевой адрес и номер порта.

Если используется протокол без установления соединения, поставщик услуг не будет назначать IP-адрес и номер порта локальной сети до тех пор, пока не будут вызваны SendAsync ReceiveAsync методы или.

ConnectAsyncМетод вызывает исключение, NotSupportedException Если семейство адресов Socket и SocketAsyncEventArgs.RemoteEndPoint не совпадает с семейством адресов.

Примечание

При получении сообщения SocketException при вызове этого метода используйте SocketException.ErrorCode свойство для получения конкретного кода ошибки. после получения этого кода ознакомьтесь с подробным описанием ошибки в документации по коду ошибки API Windows sockets версии 2 .

См. также раздел

Применяется к

ConnectAsync(IPAddress, Int32)

Устанавливает подключение к удаленному узлу.

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

Параметры

address
IPAddress

IPAddress удаленного узла, к которому необходимо подключиться.

port
Int32

Порт на удаленном узле, к которому необходимо подключиться.

Возвращаемое значение

Task

Асинхронная задача, которая завершается при установке соединения.

Применяется к

ConnectAsync(EndPoint)

Устанавливает подключение к удаленному узлу.

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

Параметры

remoteEP
EndPoint

Конечная точка, к которой необходимо подключиться.

Возвращаемое значение

Task

Асинхронная задача, которая завершается при установке соединения.

Применяется к

ConnectAsync(IPAddress[], Int32)

Устанавливает подключение к удаленному узлу.

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

Параметры

addresses
IPAddress[]

Список IPAddresses для удаленного узла, который будет использоваться для попытки подключения к удаленному узлу.

port
Int32

Порт на удаленном узле, к которому необходимо подключиться.

Возвращаемое значение

Task

Асинхронная задача, которая завершается при установке соединения.

Применяется к

ConnectAsync(EndPoint, CancellationToken)

Устанавливает подключение к удаленному узлу.

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

Параметры

remoteEP
EndPoint

Конечная точка, к которой необходимо подключиться.

cancellationToken
CancellationToken

Токен отмены, который можно использовать для отмены асинхронной операции.

Возвращаемое значение

ValueTask

Асинхронная задача, которая завершается при установке соединения.

Применяется к