DatagramSocket.ConnectAsync Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Перегрузки
ConnectAsync(EndpointPair) |
Запускает операцию подключения datagramSocket к удаленному сетевому назначению, указанному в качестве объекта EndpointPair . |
ConnectAsync(HostName, String) |
Запускает операцию подключения datagramSocket к удаленному назначению, указанному именем удаленного узла и именем удаленной службы. |
ConnectAsync(EndpointPair)
Запускает операцию подключения datagramSocket к удаленному сетевому назначению, указанному в качестве объекта EndpointPair .
public:
virtual IAsyncAction ^ ConnectAsync(EndpointPair ^ endpointPair) = ConnectAsync;
/// [Windows.Foundation.Metadata.Overload("ConnectWithEndpointPairAsync")]
IAsyncAction ConnectAsync(EndpointPair const& endpointPair);
[Windows.Foundation.Metadata.Overload("ConnectWithEndpointPairAsync")]
public IAsyncAction ConnectAsync(EndpointPair endpointPair);
function connectAsync(endpointPair)
Public Function ConnectAsync (endpointPair As EndpointPair) As IAsyncAction
Параметры
- endpointPair
- EndpointPair
Объект EndpointPair , указывающий имя локального узла или IP-адрес, имя локальной службы или порт UDP, имя удаленного узла или удаленный IP-адрес, а также имя удаленной службы или удаленный UDP-порт для удаленного сетевого назначения.
Возвращаемое значение
Асинхронная операция подключения к объекту DatagramSocket .
- Атрибуты
Требования к Windows
Возможности приложения |
ID_CAP_NETWORKING [Windows Phone]
internetClientServer
privateNetworkClientServer
|
Комментарии
Этот метод ConnectAsync(EndPointPair) в DatagramSocket используется для определения локальной и удаленной конечной точки, куда будут отправляться датаграммы при использовании свойства OutputStream . Этот метод также ограничивает удаленные IP-адреса пакетов, которые будут приниматься именем удаленного узла в параметре endpointPair . Только входящие пакеты, соответствующие удаленной конечной точке в параметре endpointPair , активируют событие MessageReceived в DatagramSocket.
Позже приложение может отправлять сетевые данные в удаленное сетевое назначение, вызвав метод WriteAsync для свойства OutputStreamDatagramSocket или передав OutputStream объекту DataWriter и вызвав методы объекта DataWriter .
Свойство RemoteHostNameобъекта EndpointPair , переданного в параметре endpointPair , может содержать имя узла или IP-адрес удаленного назначения. Свойство RemoteServiceNameобъекта EndpointPair, переданного в параметре endpointPair , может содержать имя службы или UDP-порт удаленного назначения. Если свойство RemoteHostName содержит имя узла, метод ConnectAsync(EndPointPair) разрешит имя удаленного узла в IP-адрес. Если свойство RemoteServiceNameendpointPair содержит имя службы, метод ConnectAsync(EndPointPair) разрешит имя удаленной службы в номер порта UDP.
Строки имен служб, которые распознаются по умолчанию, — это имена служб, перечисленные в файле %windir%\System32\drivers\etc\services на локальном компьютере. Любое другое значение имени службы приводит к запросу службы имен к dns-серверам для записей DNS SRV.
Необходимо указать свойства RemoteHostName и RemoteServiceName . Если значение RemoteHostName равно NULL или значение RemoteServiceName равно NULL или пустая строка, возникнет ошибка.
Если объект EndpointPair, переданный в параметре endpointPair , содержит пустое свойство LocalHostName , система предоставит локальный IP-адрес, который будет использоваться. Если объект EndpointPair, переданный в параметре endpointPair , содержит пустое свойство LocalServiceName , система предоставит используемый локальный порт UDP.
Существует два способа использования DatagramSocket для отправки датаграмм UDP в удаленное сетевое назначение.
- Использование одного из методов GetOutputStreamAsync .
- После успешного вызова метода ConnectAsync с помощью свойства OutputStream .
Методы GetOutputStreamAsync позволяют приложению отправлять датаграммы UDP с помощью объекта DatagramSocket в несколько сетевых назначений. При каждом вызове метода GetOutputStreamAsync приложение может задавать различные значения для параметров remoteHostName и remoteServiceName .
Чтобы получить данные из одной удаленной конечной точки в объекте DatagramSocket , приложение должно назначить событие MessageReceived обработчику событий, а затем вызвать метод ConnectAsync(EndPointPair) с параметром endpointPair, заданным для сведений об удаленной конечной точке. Обработчик событий MessageReceived должен быть задан перед любой операцией привязки или подключения, в противном случае возникнет ошибка.
Типичный порядок операций выглядит следующим образом:
- Создайте DatagramSocket.
- Используйте свойство Control в DatagramSocket , чтобы получить объект DatagramSocketControl и задать дополнительные элементы управления. Этот шаг обычно не требуется для большинства приложений.
- Назначьте событие MessageReceived обработчику событий.
- Вызовите метод ConnectAsync для подключения к удаленной конечной точке.
- Используйте свойство OutputStream в DatagramSocket с объектом DataWriter для отправки сообщений в удаленную конечную точку.
- Обработчик событий MessageReceived будет вызываться при поступлении сообщения из удаленной конечной точки. Методы GetOutputStreamAsync также отличаются от метода ConnectAsync, если приложение использует метод BindEndpointAsync или BindServiceNameAsync для привязки к имени локальной службы или порту UDP. С помощью методов GetOutputStreamAsync приложение будет получать пакеты из любого удаленного назначения, отправленного на имя локальной службы или порт UDP. С помощью методов ConnectAsync приложение будет получать только пакеты из удаленного назначения, передаваемые в качестве параметров методам ConnectAsync.
Метод BindServiceNameAsync(String, NetworkAdapter) можно использовать для указания сетевого адаптера перед вызовом метода ConnectAsync(EndPointPair). Указанный адаптер используется для операции привязки. Если после вызова метода BindServiceNameAsync(String, NetworkAdapter) и параметра endpointPair , переданного в ConnectAsync(EndPointPair), указан параметр LocalHostName, метод ConnectAsync(EndPointPair) завершится ошибкой.
Метод ConnectAsync работает только для одноадресных IP-адресов. При попытке вызвать метод ConnectAsync с IP-адресом многоадресной рассылки в удаленном IP-адресе, заданном в параметре endpointPair , асинхронная операция завершится ошибкой. При передаче ошибки в метод SocketError.GetStatus возвращается значение SocketErrorStatus.HostNotFound.
Использование ConnectAsync с широковещательным IP-адресом, например 255.255.255,255, приведет к подключению, но будет транслироваться только через первый найденный сетевой адаптер. Для широковещательной трансляции на всех доступных адаптерах используйте GetOutputStreamAsync.
См. также раздел
Применяется к
ConnectAsync(HostName, String)
Запускает операцию подключения datagramSocket к удаленному назначению, указанному именем удаленного узла и именем удаленной службы.
public:
virtual IAsyncAction ^ ConnectAsync(HostName ^ remoteHostName, Platform::String ^ remoteServiceName) = ConnectAsync;
/// [Windows.Foundation.Metadata.Overload("ConnectAsync")]
/// [Windows.Foundation.Metadata.RemoteAsync]
IAsyncAction ConnectAsync(HostName const& remoteHostName, winrt::hstring const& remoteServiceName);
[Windows.Foundation.Metadata.Overload("ConnectAsync")]
[Windows.Foundation.Metadata.RemoteAsync]
public IAsyncAction ConnectAsync(HostName remoteHostName, string remoteServiceName);
function connectAsync(remoteHostName, remoteServiceName)
Public Function ConnectAsync (remoteHostName As HostName, remoteServiceName As String) As IAsyncAction
Параметры
- remoteHostName
- HostName
Имя узла или IP-адрес удаленного сетевого назначения.
- remoteServiceName
-
String
Platform::String
winrt::hstring
Имя службы или UDP-порт удаленного сетевого назначения.
Возвращаемое значение
Асинхронная операция подключения к объекту DatagramSocket .
- Атрибуты
Требования к Windows
Возможности приложения |
ID_CAP_NETWORKING [Windows Phone]
internetClientServer
privateNetworkClientServer
|
Комментарии
Метод ConnectAsync в DatagramSocket используется для определения имени удаленного узла или удаленного IP-адреса, а также имени удаленной службы или номера порта UDP, куда будут отправляться датаграммы при использовании свойства OutputStream . Этот метод также ограничивает удаленные IP-адреса пакетов, которые будут приниматься параметром remoteHostName . Только входящие пакеты, соответствующие параметру remoteHostName , активируют событие MessageReceived в DatagramSocket.
Позже приложение может отправлять сетевые данные в удаленное сетевое назначение, вызвав метод WriteAsync для свойства OutputStreamDatagramSocket или передав OutputStream объекту DataWriter и вызвав методы объекта DataWriter .
Параметр remoteHostName может содержать имя узла или IP-адрес удаленного назначения. Параметр remoteServiceName может содержать имя службы или UDP-порт удаленного назначения. Если параметр remoteHostName содержит имя узла, метод ConnectAsync разрешит имя удаленного узла в IP-адрес. Если параметр remoteServiceName содержит имя службы, метод ConnectAsync разрешит имя удаленной службы в номер порта UDP.
Строки имен служб, распознаваемые по умолчанию параметром remoteServiceName , — это имена служб, перечисленные в файле %windir%\System32\drivers\etc\services на локальном компьютере. Любое другое значение имени службы приводит к запросу службы имен к dns-серверам для записей DNS SRV.
Необходимо указать параметры remoteHostName и remoteServiceName . Если параметр remoteHostName имеет значение NULL, remoteServiceName имеет значение NULL или пустую строку, возникнет ошибка.
Существует два способа использования DatagramSocket для отправки датаграмм UDP в удаленное сетевое назначение.
- Используйте один из методов GetOutputStreamAsync .
- После успешного вызова метода ConnectAsync используйте свойство OutputStream .
Методы GetOutputStreamAsync позволяют приложению отправлять датаграммы UDP с помощью объекта DatagramSocket в несколько сетевых назначений. При каждом вызове метода GetOutputStreamAsync приложение может задавать различные значения для параметров remoteHostName и remoteServiceName .
Чтобы получить данные из одной конечной точки в объекте DatagramSocket , приложение должно назначить событие MessageReceived обработчику событий, а затем вызвать метод ConnectAsync с параметрами remoteHostName и remoteServiceName , заданными для сведений об удаленной конечной точке. Обработчик событий MessageReceived должен быть задан перед любой операцией привязки или подключения, в противном случае возникнет ошибка.
Типичный порядок операций выглядит следующим образом:
- Создайте DatagramSocket.
- Используйте свойство Control в DatagramSocket , чтобы получить объект DatagramSocketControl и задать дополнительные элементы управления. Этот шаг обычно не требуется для большинства приложений.
- Назначьте событие MessageReceived обработчику событий.
- Вызовите метод ConnectAsync для подключения к удаленной конечной точке.
- Используйте свойство OutputStream в DatagramSocket с объектом DataWriter для отправки сообщений в удаленную конечную точку.
- Обработчик событий MessageReceived будет вызываться при поступлении сообщения из удаленной конечной точки. Методы GetOutputStreamAsync также отличаются от метода ConnectAsync , если приложение использует метод BindEndpointAsync или BindServiceNameAsync для привязки к имени локальной службы или порту UDP. С помощью методов GetOutputStreamAsync приложение будет получать пакеты из любого удаленного назначения, отправленного на имя локальной службы или порт UDP. С помощью методов ConnectAsync приложение будет получать только пакеты из удаленного назначения, передаваемые в качестве параметров методам ConnectAsync .
Метод ConnectAsync работает только для одноадресных IP-адресов. При попытке вызвать метод ConnectAsync с IP-адресом многоадресной рассылки для параметра remoteHostName асинхронная операция завершится ошибкой. При передаче ошибки в метод SocketError.GetStatus возвращается значение SocketErrorStatus.HostNotFound.
Использование ConnectAsync с широковещательным IP-адресом, например 255.255.255,255, приведет к подключению, но будет транслироваться только через первый найденный сетевой адаптер. Для широковещательной трансляции на всех доступных адаптерах используйте GetOutputStreamAsync.