PeerFinder.Role 屬性
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
取得或設定應用程式在點對點連線中的角色。
public:
static property PeerRole Role { PeerRole get(); void set(PeerRole value); };
static PeerRole Role();
static void Role(PeerRole value);
public static PeerRole Role { get; set; }
var peerRole = PeerFinder.role;
PeerFinder.role = peerRole;
Public Shared Property Role As PeerRole
屬性值
應用程式在點對點連線中的角色。
Windows 需求
應用程式功能 |
ID_CAP_NETWORKING [Windows Phone]
ID_CAP_NETWORKING [Windows Phone]
proximity
ID_CAP_PROXIMITY [Windows Phone]
|
範例
// 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 屬性,預設值為 [對等]。
在多對等應用程式案例中,角色會識別應用程式連線的功能。 主機應用程式最多可以連線到五個用戶端應用程式。 主 應用程式只能探索公告為 用戶端應用程式 的應用程式。 用戶端應用程式 只能探索公告為 主機 應用程式的應用程式。 對等角色會識別兩個應用程式案例。 因此, 對等 應用程式只能探索其他 對等 應用程式。 相同的規則適用于使用點選手勢連線的對等應用程式。 例如,應用程式廣告為 主機 應用程式只能點選以與應用程式廣告作為 用戶端應用程式 進行連線。