Поделиться через


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 должен быть задан перед любой операцией привязки или подключения, в противном случае возникнет ошибка.

Типичный порядок операций выглядит следующим образом:

  1. Создайте DatagramSocket.
  2. Используйте свойство Control для получения объекта DatagramSocketControl и задания дополнительных элементов управления. Этот шаг обычно не требуется для большинства приложений.
  3. Назначьте событие MessageReceived обработчику событий.
  4. Вызовите метод GetOutputStreamAsync(EndpointPair), чтобы получить OutputStream для отправки данных в удаленную конечную точку. Метод GetOutputStreamAsync(EndpointPair) также привязывает DatagramSocket к имени локальной службы или порту UDP, а также к имени локального узла или IP-адресу с помощью параметра endpointPair .
  5. Обработчик событий 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 должен быть задан перед любой операцией привязки или подключения, в противном случае возникнет ошибка.

Типичный порядок операций выглядит следующим образом:

  1. Создайте DatagramSocket.
  2. Используйте свойство Control для получения объекта DatagramSocketControl и задания дополнительных элементов управления. Этот шаг обычно не требуется для большинства приложений.
  3. Назначьте событие MessageReceived обработчику событий.
  4. Привяжите DatagramSocket к имени локальной службы или порту UDP.
  5. Обработчик событий MessageReceived будет вызываться при поступлении сообщения из удаленной конечной точки.
  6. Вызовите метод GetOutputStreamAsync, чтобы получить OutputStream для отправки данных в удаленную конечную точку. Вы можете использовать сведения, содержащиеся в DatagramSocketMessageReceivedEventArgs из обработчика событий MessageReceived , чтобы установить OutputStream с удаленной конечной точкой, создающей определенное входящее сообщение. Методы GetOutputStreamAsync также отличаются от метода ConnectAsync , если приложение использует метод BindEndpointAsync или BindServiceNameAsync для привязки к имени локальной службы или порту UDP. С помощью методов GetOutputStreamAsync приложение будет получать пакеты из любого удаленного назначения, отправленного на имя локальной службы или порт UDP. С помощью методов ConnectAsync приложение будет получать только пакеты из удаленного назначения, передаваемые в качестве параметров методам ConnectAsync .

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

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