PeerNameResolver.Resolve 方法

定义

使用 PNRP 协议将 PeerName 对象解析为 PeerNameRecord

重载

Resolve(PeerName)

解析调用对等方已知的所有群中指定的 PeerName

Resolve(PeerName, Int32)

解析调用对等方已知的所有群中的指定对等名称,并返回不超过指定数目的 PeerNameRecord 对象。

Resolve(PeerName, Cloud)

解析指定 PeerName 中的指定 Cloud

Resolve(PeerName, Cloud, Int32)

解析指定 PeerName 中的指定 Cloud,并返回不超过指定数目的 PeerNameRecord 对象。

注解

此方法将对等名称关联到云。 PeerNameResolver调用 方法类似于为 中的每个PeerNameRecordCollection对等名称记录调用 Resolve 方法。 请注意,对单个对等名称记录使用 Resolve 方法不会使解析多个对等名称无效。

对于每个 Resolve 方法,都有一个等效 ResolveAsync 的方法。 它们在传递的参数中是相同的,只是 ResolveAsync 方法在其参数列表中包含一个系统令牌,用于异步事件处理。

Cloud如果未提供 参数,该方法使用 Available 快捷方式来填充云参数。 如果缺少参数 maxRecords ,则默认值为零会导致 ArgumentOutOfRangeException 引发异常。

如果解析操作在错误中完成或取消,也会引发此事件。

Resolve(PeerName)

解析调用对等方已知的所有群中指定的 PeerName

public:
 System::Net::PeerToPeer::PeerNameRecordCollection ^ Resolve(System::Net::PeerToPeer::PeerName ^ peerName);
public System.Net.PeerToPeer.PeerNameRecordCollection Resolve (System.Net.PeerToPeer.PeerName peerName);
member this.Resolve : System.Net.PeerToPeer.PeerName -> System.Net.PeerToPeer.PeerNameRecordCollection
Public Function Resolve (peerName As PeerName) As PeerNameRecordCollection

参数

peerName
PeerName

要解析的 PeerName

返回

包含与指定的对等名称关联的所有对等名称记录(表示为 PeerNameRecordCollection 对象)的 PeerNameRecord。 对于不安全的对等名称,可由不同的用户在同一个 PeerName 中注册同一个 Cloud,并将其与不同的终结点关联。

例外

peerName 参数设置为 null

指定的对等名称无法解析。

示例

下面的代码示例演示如何解析 PeerName 任何 Cloud中发布的 。

static void Main(string[] args)
{
    try
    {

        if (args.Length != 1)
        {
            Console.WriteLine("Usage: PeerNameResolver.exe <PeerNameToResolve>");
            return;
        }

        // create a resolver object to resolve a Peer Name that was previously published
        PeerNameResolver resolver = new PeerNameResolver();
        // The Peer Name to resolve must be passed as the first
        // command line argument to the application
        PeerName peerName = new PeerName(args[0]);
        // Resolve the Peer Name
        // This is a network operation and will block until the resolve completes
        PeerNameRecordCollection results = resolver.Resolve(peerName);

        // Display the data returned by the resolve operation
        Console.WriteLine("Resolve operation complete.\n", peerName);
        Console.WriteLine("Results for PeerName: {0}", peerName);
        Console.WriteLine();

        int count = 1;
        foreach (PeerNameRecord record in results)
        {
            Console.WriteLine("Record #{0} results...", count);

            Console.Write("Comment:");
            if (record.Comment != null)
            {
                Console.Write(record.Comment);
            }
            Console.WriteLine();

            Console.Write("Data:");
            if (record.Data != null)
            {
                // Assumes the data blob associated with the PeerName
                // is made up of ASCII characters
                Console.Write(System.Text.Encoding.ASCII.GetString(record.Data));
            }
            Console.WriteLine();

            Console.WriteLine("Endpoints:");
            foreach (IPEndPoint endpoint in record.EndPointCollection)
            {
                Console.WriteLine("\t Endpoint:{0}", endpoint);
                Console.WriteLine();
            }

            count++;
        }

        Console.ReadKey();
    }
    catch (Exception e)
    {
        Console.WriteLine("Error occurred while attempting to resolve the PeerName: {0}", e.Message);
        Console.WriteLine(e.StackTrace);

        // P2P is not supported on Windows Server 2003
        if (e.InnerException != null)
        {
            Console.WriteLine("Inner Exception is {0}", e.InnerException);
        }
    }
}

注解

此方法将对等名称关联到云。 所有云都查询 。PeerName 如果无法解析对等名称或 为 nullPeerToPeerException 则会引发 。

对于不安全的对等名称,同一名称可以注册 (,并与同一云中不同对等方) 的不同终结点相关联。

PeerNameResolver调用 方法类似于为 中的每个PeerNameRecordCollection对等名称记录调用 Resolve 方法。 请注意,对单个对等名称记录使用 Resolve 方法不会使解析多个对等名称无效。

对于每个 Resolve 方法,都有一个等效 ResolveAsync 的方法。 它们的参数列表是相同的,只是 ResolveAsync 方法包含用于异步事件处理的系统令牌。

Cloud如果未提供 参数,该方法使用 Available 快捷方式来填充云参数。

ResolveCompleted如果解析操作在错误中完成或被取消,将引发 该事件。

另请参阅

适用于

Resolve(PeerName, Int32)

解析调用对等方已知的所有群中的指定对等名称,并返回不超过指定数目的 PeerNameRecord 对象。

public:
 System::Net::PeerToPeer::PeerNameRecordCollection ^ Resolve(System::Net::PeerToPeer::PeerName ^ peerName, int maxRecords);
public System.Net.PeerToPeer.PeerNameRecordCollection Resolve (System.Net.PeerToPeer.PeerName peerName, int maxRecords);
member this.Resolve : System.Net.PeerToPeer.PeerName * int -> System.Net.PeerToPeer.PeerNameRecordCollection
Public Function Resolve (peerName As PeerName, maxRecords As Integer) As PeerNameRecordCollection

参数

peerName
PeerName

要解析的 PeerName

maxRecords
Int32

要从所有 PeerNameRecord 中获取提供的 peerNameCloud 对象的最大数目。

返回

大小小于或等于 maxRecords 条目的 PeerNameRecordCollection。 此集合包含与解析的 PeerName 关联的对等名称记录。

例外

peerName 参数设置为 null

maxRecords 参数小于或等于零。

提供的对等名称无法解析。

注解

此方法将对等名称关联到云。 所有云都查询对等名称。 对于不安全的对等名称,同一对等名称可由同一个 中的 Cloud不同用户注册,并与不同的终结点相关联。 例如, PeerName 如果 无法解析 (,则不会在引发) PeerToPeerException 发布对等名称。

对于每个 Resolve 方法,都有一个等效 ResolveAsync 的方法。 它们的参数列表是相同的,只是 ResolveAsync 方法包含用于异步事件处理的系统令牌。

ResolveCompleted如果解析操作在错误中完成或被取消,将引发 该事件。

适用于

Resolve(PeerName, Cloud)

解析指定 PeerName 中的指定 Cloud

public:
 System::Net::PeerToPeer::PeerNameRecordCollection ^ Resolve(System::Net::PeerToPeer::PeerName ^ peerName, System::Net::PeerToPeer::Cloud ^ cloud);
public System.Net.PeerToPeer.PeerNameRecordCollection Resolve (System.Net.PeerToPeer.PeerName peerName, System.Net.PeerToPeer.Cloud cloud);
member this.Resolve : System.Net.PeerToPeer.PeerName * System.Net.PeerToPeer.Cloud -> System.Net.PeerToPeer.PeerNameRecordCollection
Public Function Resolve (peerName As PeerName, cloud As Cloud) As PeerNameRecordCollection

参数

peerName
PeerName

要解析的 PeerName

cloud
Cloud

要在其中解析对等名称的 Cloud

返回

包含与指定的对等名称关联的所有对等名称记录(表示为 PeerNameRecordCollection 对象)的 PeerNameRecord。 对于不安全的对等名称,可由不同的用户在同一个 PeerName 中注册同一个 Cloud,并将其与不同的终结点关联。

例外

peerName 参数设置为 null

提供的对等名称无法解析。

注解

PeerName如果 无法解析 (,则不会在引发) PeerToPeerException 发布对等名称。

对于不安全的对等名称,同一名称可以注册 (,并与同一云中不同对等方) 的不同终结点相关联。

对于每个 Resolve 方法,都有一个等效 ResolveAsync 的方法。 它们的参数列表是相同的,只是 ResolveAsync 方法包含用于异步事件处理的系统令牌。

Cloud如果 参数为 null,则 PeerNameResolver 使用Available快捷方式填充 NameScopeScopeId

ResolveCompleted如果解析操作在错误中完成或被取消,将引发 该事件。

适用于

Resolve(PeerName, Cloud, Int32)

解析指定 PeerName 中的指定 Cloud,并返回不超过指定数目的 PeerNameRecord 对象。

public:
 System::Net::PeerToPeer::PeerNameRecordCollection ^ Resolve(System::Net::PeerToPeer::PeerName ^ peerName, System::Net::PeerToPeer::Cloud ^ cloud, int maxRecords);
[System.Security.SecurityCritical]
public System.Net.PeerToPeer.PeerNameRecordCollection Resolve (System.Net.PeerToPeer.PeerName peerName, System.Net.PeerToPeer.Cloud cloud, int maxRecords);
[<System.Security.SecurityCritical>]
member this.Resolve : System.Net.PeerToPeer.PeerName * System.Net.PeerToPeer.Cloud * int -> System.Net.PeerToPeer.PeerNameRecordCollection
Public Function Resolve (peerName As PeerName, cloud As Cloud, maxRecords As Integer) As PeerNameRecordCollection

参数

peerName
PeerName

要解析的 PeerName

cloud
Cloud

在其中解析 peerNameCloud

maxRecords
Int32

要从指定群中获取指定 peerName 的最大对等名称记录对象数。

返回

大小小于或等于 maxRecords 条目的 PeerNameRecordCollection。 此集合包含与解析的 PeerName 关联的对等名称记录。

属性

例外

peerName 参数设置为 null

maxRecords 参数小于或等于零。

提供的对等名称无法解析。

注解

对于不安全的对等名称,同一名称可以注册 (,并与同一云中不同对等方) 的不同终结点相关联。 如果无法解析对等名称, PeerToPeerException 则会引发 。

对于每个 Resolve 方法,都有一个等效 ResolveAsync 的方法。 它们的参数列表是相同的,只是 ResolveAsync 方法包含用于异步事件处理的系统令牌。

Cloud如果 参数为 null,则 PeerNameResolver 使用Available快捷方式填充 NameScopeScopeId

ResolveCompleted如果解析操作在错误中完成或被取消,将引发 该事件。

适用于