PeerRole Перечисление
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Описывает роль однорангового приложения при подключении к нескольким одноранговым узлам.
public enum class PeerRole
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
enum class PeerRole
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
public enum PeerRole
var value = Windows.Networking.Proximity.PeerRole.peer
Public Enum PeerRole
- Наследование
-
PeerRole
- Атрибуты
Требования к Windows
Семейство устройств |
Windows 10 (появилось в 10.0.10240.0 - for Xbox, see UWP features that aren't yet supported on Xbox)
|
API contract |
Windows.Foundation.UniversalApiContract (появилось в v1.0)
|
Возможности приложения |
proximity
|
Поля
Client | 2 | Приложение является одноранговым клиентским приложением в многоранговом подключении. |
Host | 1 | Приложение является одноранговым приложением узла в многоранговом подключении. |
Peer | 0 | Приложение является частью двух однорангового соединения. |
Примеры
// Default to the peer role.
Windows.Networking.Proximity.PeerRole appRole = Windows.Networking.Proximity.PeerRole.Peer;
bool launchedByTap = false;
protected override void OnNavigatedTo(NavigationEventArgs e)
{
LaunchActivatedEventArgs launchArgs = e.Parameter as LaunchActivatedEventArgs;
if (launchArgs.Arguments.Contains("Windows.Networking.Proximity.PeerFinder:StreamSocket"))
{
launchedByTap = true;
if (launchArgs.Arguments.Contains("Role=Host"))
{
appRole = Windows.Networking.Proximity.PeerRole.Host;
}
else if (launchArgs.Arguments.Contains("Role=Client"))
{
appRole = Windows.Networking.Proximity.PeerRole.Client;
}
else
{
appRole = Windows.Networking.Proximity.PeerRole.Peer;
}
}
}
bool started = false;
// Click event for "Advertise" button.
void AdvertiseForPeers(object sender, RoutedEventArgs e)
{
if (!started)
{
Windows.Networking.Proximity.PeerFinder.DisplayName = DisplayNameTextBox.Text;
if ((Windows.Networking.Proximity.PeerFinder.SupportedDiscoveryTypes &
Windows.Networking.Proximity.PeerDiscoveryTypes.Triggered) ==
Windows.Networking.Proximity.PeerDiscoveryTypes.Triggered)
{
Windows.Networking.Proximity.PeerFinder.TriggeredConnectionStateChanged +=
TriggeredConnectionStateChanged;
WriteMessageText("You can tap to connect a peer device that is " +
"also advertising for a connection.\n");
}
else
{
WriteMessageText("Tap to connect is not supported.\n");
}
if ((Windows.Networking.Proximity.PeerFinder.SupportedDiscoveryTypes &
Windows.Networking.Proximity.PeerDiscoveryTypes.Browse) !=
Windows.Networking.Proximity.PeerDiscoveryTypes.Browse)
{
WriteMessageText("Peer discovery using Wi-Fi Direct is not supported.\n");
}
// Set the peer role selected by the user.
if (launchedByTap)
{
Windows.Networking.Proximity.PeerFinder.Role = appRole;
}
else
{
switch (GetRoleFromUser())
{
case "Peer":
Windows.Networking.Proximity.PeerFinder.Role =
Windows.Networking.Proximity.PeerRole.Peer;
break;
case "Host":
Windows.Networking.Proximity.PeerFinder.Role =
Windows.Networking.Proximity.PeerRole.Host;
break;
case "Client":
Windows.Networking.Proximity.PeerFinder.Role =
Windows.Networking.Proximity.PeerRole.Client;
break;
}
}
// Set discoveryData property with user supplied text.
var discData = GetDiscoveryDataFromUser();
var writer = new Windows.Storage.Streams.DataWriter(
new Windows.Storage.Streams.InMemoryRandomAccessStream());
writer.WriteString(discData);
Windows.Networking.Proximity.PeerFinder.DiscoveryData =
writer.DetachBuffer();
Windows.Networking.Proximity.PeerFinder.Start();
started = true;
}
}
// Write a message to MessageBlock on the UI thread.
private Windows.UI.Core.CoreDispatcher messageDispatcher = Window.Current.CoreWindow.Dispatcher;
async private void WriteMessageText(string message, bool overwrite = false)
{
await messageDispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal,
() =>
{
if (overwrite)
MessageBlock.Text = message;
else
MessageBlock.Text += message;
});
}
Комментарии
Свойство Role используется в подключениях к многоранговым приложениям, чтобы определить, является ли одноранговое приложение узлом или клиентом или одноранговое приложение участвует в двух одноранговом соединении в качестве однорангового. Для многоранговых подключений к приложениям необходимо задать свойство Role перед вызовом метода Start . Если свойство Role не задано, по умолчанию используется одноранговый узел.
В сценарии с многоранговым приложением роль определяет возможность подключения приложений. Ведущее приложение может подключаться к четырем клиентским приложениям. Хост-приложения могут обнаруживать только приложения, которые объявляют как клиентские приложения. Клиентские приложения могут обнаруживать только приложения, которые объявляют как хост-приложения . Роль однорангового узла определяет сценарий с двумя приложениями. Таким образом, одноранговые приложения могут обнаруживать только другие одноранговые приложения. Те же правила применяются к одноранговым приложениям, подключенным с помощью жеста касания. Например, приложения, рекламу которых можно использовать в качестве ведущих приложений, можно использовать только для подключения к приложениям, которые объявляются как клиентские приложения.