DatagramSocket.GetOutputStreamAsync Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Перегрузки
GetOutputStreamAsync(EndpointPair) |
Запускает операцию для получения IOutputStream к удаленному сетевому назначению, указанному объектом EndpointPair , который затем можно использовать для отправки сетевых данных. |
GetOutputStreamAsync(HostName, String) |
Запускает операцию для получения IOutputStream в удаленное назначение, указанное именем удаленного узла и именем удаленной службы, которое затем можно использовать для отправки сетевых данных. |
GetOutputStreamAsync(EndpointPair)
Запускает операцию для получения IOutputStream к удаленному сетевому назначению, указанному объектом EndpointPair , который затем можно использовать для отправки сетевых данных.
public:
virtual IAsyncOperation<IOutputStream ^> ^ GetOutputStreamAsync(EndpointPair ^ endpointPair) = GetOutputStreamAsync;
/// [Windows.Foundation.Metadata.Overload("GetOutputStreamWithEndpointPairAsync")]
/// [Windows.Foundation.Metadata.RemoteAsync]
IAsyncOperation<IOutputStream> GetOutputStreamAsync(EndpointPair const& endpointPair);
[Windows.Foundation.Metadata.Overload("GetOutputStreamWithEndpointPairAsync")]
[Windows.Foundation.Metadata.RemoteAsync]
public IAsyncOperation<IOutputStream> GetOutputStreamAsync(EndpointPair endpointPair);
function getOutputStreamAsync(endpointPair)
Public Function GetOutputStreamAsync (endpointPair As EndpointPair) As IAsyncOperation(Of IOutputStream)
Параметры
- endpointPair
- EndpointPair
Пара конечных точек, представляющая имя локального узла или локальный IP-адрес, имя локальной службы или локальный UDP-порт, имя удаленного узла или удаленный IP-адрес, а также имя удаленной службы или удаленный UDP-порт.
Возвращаемое значение
IOutputStream, представляющий асинхронную операцию.
- Атрибуты
Требования к Windows
Возможности приложения |
ID_CAP_NETWORKING [Windows Phone]
|
Комментарии
Метод GetOutputStreamAsync(EndpointPair) в DatagramSocket используется для запуска операции по получении IOutputStream к удаленному сетевому назначению, указанному объектом EndpointPair . Затем IOutputStream можно использовать для отправки данных в удаленное место назначения.
Метод GetOutputStreamAsync(EndpointPair) возвращает IOutputStream после успешного завершения. При записи в этот поток будут отправляться датаграммы на указанный удаленный узел и имя службы. IOutputStream всегда отправляет имя удаленного узла и имя удаленной службы, указанные в методе ConnectAsync.
Свойство RemoteHostNameобъекта EndpointPair , переданного в параметре endpointPair , может содержать имя узла или IP-адрес удаленного назначения. Свойство RemoteServiceNameобъекта EndpointPair, переданного в параметре endpointPair , может содержать имя службы или UDP-порт удаленного назначения. Если свойство RemoteHostName содержит имя узла, метод GetOutputStreamAsync(EndpointPair) приводит к разрешению имен удаленного имени узла. Если свойство RemoteServiceName содержит имя службы, то метод GetOutputStreamAsync приводит к разрешению имени удаленной службы на порт UDP.
Свойства RemoteHostName и RemoteServiceName должны быть предоставлены в объекте EndpointPair, переданном в параметре endpointPair . Если значение RemoteHostName равно NULL , Значение RemoteServiceName равно NULL или пустая строка, возникнет ошибка.
Если объект EndpointPair, переданный в параметре endpointPair , содержит пустое свойство LocalHostName , система предоставит локальный IP-адрес, который будет использоваться. Если объект EndpointPair , переданный в параметре endpointPair , содержит пустую строку для свойства LocalServiceName , система предоставит используемый локальный UDP-порт.
Существует два способа использования DatagramSocket для отправки датаграмм UDP в удаленное сетевое назначение.
- Используйте один из методов GetOutputStreamAsync .
- После успешного вызова одного из методов ConnectAsync передайте свойство OutputStream в объект DataWriter и используйте методы объекта DataWriter для отправки данных.
Методы GetOutputStreamAsync позволяют приложению отправлять датаграммы UDP с помощью объекта DatagramSocket в несколько сетевых назначений. При каждом вызове метода GetOutputStreamAsync(EndpointPair) приложение может задать различные значения для элементов RemoteHostName и RemoteServiceName в параметре endpointPair .
Чтобы получить данные из любой удаленной конечной точки в объекте DatagramSocket , приложение должно назначить событие MessageReceived обработчику событий, а затем вызвать метод BindEndpointAsync или BindServiceNameAsync для привязки DatagramSocket к имени локальной службы или порту UDP перед вызовом метода GetOutputStreamAsync. Обработчик событий MessageReceived должен быть задан перед любой операцией привязки или подключения, в противном случае возникнет ошибка.
Типичный порядок операций выглядит следующим образом:
- Создайте DatagramSocket.
- Используйте свойство Control для получения объекта DatagramSocketControl и задания дополнительных элементов управления. Этот шаг обычно не требуется для большинства приложений.
- Назначьте событие MessageReceived обработчику событий.
- Вызовите метод GetOutputStreamAsync(EndpointPair), чтобы получить OutputStream для отправки данных в удаленную конечную точку. Метод GetOutputStreamAsync(EndpointPair) также привязывает DatagramSocket к имени локальной службы или порту UDP, а также к имени локального узла или IP-адресу с помощью параметра endpointPair .
- Обработчик событий MessageReceived будет вызываться при поступлении сообщения из удаленной конечной точки. Методы GetOutputStreamAsync также отличаются от методов ConnectAsync , когда приложение использует метод BindEndpointAsync или BindServiceNameAsync для привязки имени локальной службы или порта UDP. С помощью методов GetOutputStreamAsync приложение будет получать пакеты из любого удаленного назначения, отправленного на имя локальной службы или порт UDP. С помощью методов ConnectAsync приложение будет получать только пакеты из удаленного назначения, передаваемые в качестве параметров методам ConnectAsync .
Метод BindServiceNameAsync(String, NetworkAdapter) можно использовать для указания сетевого адаптера перед вызовом метода GetOutputStreamAsync(EndpointPair). Указанный адаптер используется для операции привязки. Если после вызова BindServiceNameAsync(String, NetworkAdapter) и параметра endpointPair , переданного в GetOutputStreamAsync(EndpointPair), указан параметр LocalHostName, метод GetOutputStreamAsync(EndpointPair) завершится ошибкой.
См. также раздел
Применяется к
GetOutputStreamAsync(HostName, String)
Запускает операцию для получения IOutputStream в удаленное назначение, указанное именем удаленного узла и именем удаленной службы, которое затем можно использовать для отправки сетевых данных.
public:
virtual IAsyncOperation<IOutputStream ^> ^ GetOutputStreamAsync(HostName ^ remoteHostName, Platform::String ^ remoteServiceName) = GetOutputStreamAsync;
/// [Windows.Foundation.Metadata.Overload("GetOutputStreamAsync")]
/// [Windows.Foundation.Metadata.RemoteAsync]
IAsyncOperation<IOutputStream> GetOutputStreamAsync(HostName const& remoteHostName, winrt::hstring const& remoteServiceName);
[Windows.Foundation.Metadata.Overload("GetOutputStreamAsync")]
[Windows.Foundation.Metadata.RemoteAsync]
public IAsyncOperation<IOutputStream> GetOutputStreamAsync(HostName remoteHostName, string remoteServiceName);
function getOutputStreamAsync(remoteHostName, remoteServiceName)
Public Function GetOutputStreamAsync (remoteHostName As HostName, remoteServiceName As String) As IAsyncOperation(Of IOutputStream)
Параметры
- remoteHostName
- HostName
Имя удаленного узла или удаленный IP-адрес.
- remoteServiceName
-
String
Platform::String
winrt::hstring
Имя удаленной службы или удаленный UDP-порт.
Возвращаемое значение
IOutputStream, представляющий асинхронную операцию.
- Атрибуты
Требования к Windows
Возможности приложения |
ID_CAP_NETWORKING [Windows Phone]
|
Комментарии
Метод [GetOutputStreamAsync(HostName, String) в DatagramSocket используется для запуска операции по получении IOutputStream к удаленному сетевому назначению, заданному именем удаленного узла и именем удаленной службы. Затем IOutputStream можно использовать для отправки данных в удаленное место назначения.
Метод [GetOutputStreamAsync(HostName, String) возвращает IOutputStream после успешного завершения. При записи в этот поток будут отправляться датаграммы на указанный удаленный узел и имя службы. IOutputStream всегда отправляет имя удаленного узла и имя удаленной службы, указанные в методе ConnectAsync.
Параметр remoteHostName может содержать имя узла или IP-адрес удаленного назначения. Параметр remoteServiceName может содержать имя службы или UDP-порт удаленного назначения. Если параметр remoteHostName содержит имя узла, то метод [GetOutputStreamAsync(HostName, String) приводит к разрешению имени удаленного узла. Если параметр remoteServiceName содержит имя службы, то метод [GetOutputStreamAsync(HostName, String) приводит к разрешению имени удаленной службы в порт UDP.
Необходимо указать параметры remoteHostName и remoteServiceName . Если параметр remoteHostName имеет значение NULL или параметр remoteServiceName имеет значение NULL или пустую строку, возникнет ошибка.
Существует два способа использования DatagramSocket для отправки датаграмм UDP в удаленное сетевое назначение.
- Используйте один из методов GetOutputStreamAsync.
- После успешного вызова одного из методов ConnectAsync передайте свойство OutputStream в объект DataWriter и используйте методы объекта DataWriter для отправки данных.
Методы GetOutputStreamAsync позволяют приложению отправлять датаграммы UDP с помощью объекта DatagramSocket в несколько сетевых назначений. При каждом вызове метода [GetOutputStreamAsync(HostName, String) приложение может задавать разные значения для параметров remoteHostName и remoteServiceName .
Методы ConnectAsync позволяют приложению отправлять датаграммы UDP с помощью объекта DatagramSocket в одно сетевое назначение.
Чтобы получить данные из любой удаленной конечной точки в объекте DatagramSocket , приложение должно назначить событие MessageReceived обработчику событий, а затем вызвать метод BindEndpointAsync или BindServiceNameAsync для привязки DatagramSocket к имени локальной службы или порту UDP перед вызовом метода GetOutputStreamAsync. Обработчик событий MessageReceived должен быть задан перед любой операцией привязки или подключения, в противном случае возникнет ошибка.
Типичный порядок операций выглядит следующим образом:
- Создайте DatagramSocket.
- Используйте свойство Control для получения объекта DatagramSocketControl и задания дополнительных элементов управления. Этот шаг обычно не требуется для большинства приложений.
- Назначьте событие MessageReceived обработчику событий.
- Привяжите DatagramSocket к имени локальной службы или порту UDP.
- Обработчик событий MessageReceived будет вызываться при поступлении сообщения из удаленной конечной точки.
- Вызовите метод GetOutputStreamAsync, чтобы получить OutputStream для отправки данных в удаленную конечную точку. Вы можете использовать сведения, содержащиеся в DatagramSocketMessageReceivedEventArgs из обработчика событий MessageReceived , чтобы установить OutputStream с удаленной конечной точкой, создающей определенное входящее сообщение. Методы GetOutputStreamAsync также отличаются от метода ConnectAsync , если приложение использует метод BindEndpointAsync или BindServiceNameAsync для привязки к имени локальной службы или порту UDP. С помощью методов GetOutputStreamAsync приложение будет получать пакеты из любого удаленного назначения, отправленного на имя локальной службы или порт UDP. С помощью методов ConnectAsync приложение будет получать только пакеты из удаленного назначения, передаваемые в качестве параметров методам ConnectAsync .