共用方式為


如何使用群組

點對點群組是一種技術,可讓開發人員快速且有效地建立安全的對等網路。 下列清單會識別建立對等群組應用程式的主要考慮。

取得對等身分識別

建立或連線到群組之前,對等必須取得對等識別,這是用來唯一識別群組對等的名稱。 若要取得對等上定義之所有對等識別的列舉清單,請呼叫 PeerEnumIdentities,以傳回列舉的控制碼。 若要取得對等識別,請使用列舉控制碼和要擷取的成員數目呼叫 PeerGetNextItem 。 繼續呼叫 PeerGetNextItem ,直到 pCount 參數傳回的值小於要求的對等識別數目為止。

如果對等的對等識別不存在,則可以呼叫 PeerIdentityCreate 來建立它。 建立對等識別之後,對等會產生識別 XML Blob,其中包含指派給它的公開金鑰

藉由呼叫 PeerIdentityGetXML來取得對等識別資訊。 此對等身分識別資訊是由群組建立者或系統管理員用來發出加入群組所需的認證,做為邀請 XML Blob。

如需對等身分識別的詳細資訊,請參閱 Identity Manager API

啟動對等群組基礎結構

在應用程式呼叫對等群組 API 中的任何函式之前,必須先呼叫 PeerGroupStartup 。 此函式會初始化應用程式的對等群組基礎結構,並設定支援的版本。

取得群組控制碼

若要連線到群組並開始參與,必須取得對等群組的控制碼。 下列清單會識別連線至對等群組的三種方式:

  • 呼叫 PeerGroupCreate以建立對等群組,以初始化新的對等群組,並以同儕節點作為擁有者和唯一系統管理員傳回有效的控制碼。
  • 藉由呼叫 PeerGroupJoin來加入對等群組。 若要加入對等群組,對等必須收到來自對等群組管理員的邀請。 若要取得邀請,請將身分識別資訊 XML Blob 傳送給建立邀請並透過外部機制傳送給您的系統管理員,例如電子郵件或 FTP。 邀請和對等身分識別會傳遞至 PeerGroupJoin,這會傳回群組的有效控制碼。
  • 開啟對等先前已加入的對等群組,方法是呼叫 PeerGroupOpen。 在此情況下,不需要取得邀請。

從上述其中一個函式取得有效的對等群組控制碼之後,您可以使用新的控制碼呼叫 PeerGroupConnect 來連線到對等群組。

注意

如果對等群組的連線失敗,就會發生PEER_GROUP_EVENT_CONNECTION_FAILED事件。 處理常式可以嘗試重新建立對等群組的連接。

 

註冊對等群組事件

對等參與對等群組之前,對等必須註冊對等群組事件。 若要註冊特定對等事件,請呼叫 PeerGroupRegisterEvent,並傳入PEER_GROUP_EVENT_TYPE中定義的一或多個對等事件種類。 您必須註冊適用于您應用程式的每個對等事件;例如,若要透過直接連線接收資料,請註冊PEER_GROUP_EVENT_DIRECT_CONNECTION和PEER_GROUP_EVENT_INCOMING_DATA事件。 每個呼叫都會接受事件控制碼,並傳回該對等事件的 HPEEREVENT 控制碼。

事件處理常式可以將控制碼傳遞至 PeerGroupGetEventData,以取得與對等事件相關聯的資料。 這個對等事件資料會以PEER_GROUP_EVENT_DATA聯集傳回。 如果對等事件佇列是空的,此函式會傳回PEER_S_NO_EVENT_DATA。

您可以呼叫 PeerGroupUnregisterEvent 並提供您要取消註冊之對等事件的控制碼,以取消註冊對等事件。 呼叫函式之後,不會再註冊與控制碼相關聯的對等事件。

建立系統管理員和成員角色

建立對等群組的對等稱為對等群組建立者,且預設具有系統管理員角色。 只有對等群組建立者可以設定群組屬性。

受邀加入對等群組的對等可以是系統管理員或成員。 如果系統管理員由發出邀請的系統管理員角色指派,他們可以邀請新成員加入對等群組,同樣地將系統管理員角色指派給其他成員。

對等群組成員的角色是在系統管理員提供給成員的邀請中設定。 若要新增更多系統管理員,請在建立邀請時,將PeerGroupCreateInvitationpRoles參數值設定為PEER_GROUP_ROLE_ADMIN。

成員可以參與對等群組,但無法邀請和授權新成員、設定群組屬性,或更新或刪除他們未特別建立的群組記錄。 若要將成員狀態指派給參與的對等,請在為該對等建立邀請時,將PeerGroupCreateInvitationpRoles參數值設定為 PEER_GROUP_ROLE_MEMBER。

若要變更成員的角色,必須發出包含新角色的新認證給該成員。 若要達成此目的,請PeerGroupEnumMembers所傳回的PEER_MEMBER結構中,取得這個成員的PEER_CREDENTIAL_INFO結構。 將PEER_CREDENTIAL_INFO中的pRoles欄位變更為新角色,並將結構傳遞至PeerGroupIssueCredentials

新的認證在連線到對等群組之前,不會對等生效。 如果它們目前已連線,則必須關閉群組,然後重新連線以取得更新的認證。

尋找對等

若要取得參與對等群組之所有對等的列舉清單,請使用群組控制碼呼叫 PeerGroupEnumMembers ,以傳回列舉的控制碼。 若要取得成員,請使用列舉控制碼和要擷取的成員數目呼叫 PeerGetNextItem 。 繼續呼叫 PeerGetNextItem ,直到 pCount 參數傳回小於所要求的成員數目的值。 請注意,可能無法傳回可用成員的完整清單。

每個成員都會以 PEER_MEMBER 結構表示,其中包含作用中對等的對等、節點識別碼和 IP 位址的身分識別。

完成時,請關閉列舉,並呼叫 PeerEndEnumeration來釋放相關聯的記憶體。

直接連線至對等

當對等連線到對等群組時,會藉由呼叫 PeerGroupOpenDirectConnection 並提供另一個對等的身分識別,來起始與其他連接的成員直接交換。 此呼叫是非同步,並傳回 64 位連線識別碼。 如果呼叫成功,您會收到PEER_GROUP_EVENT_DIRECT_CONNECTION_EVENT對等事件,以指出連線成功。 如果連線成功,連線識別碼有效,而且可用來透過直接連線傳送和接收資料。

若要能夠接收直接連線,其他對等也必須先前註冊PEER_GROUP_EVENT_DIRECT_CONNECTION對等事件。

若要將資料傳送至對等,請使用有效的連線識別碼呼叫 PeerGroupSendData 。 若要接收資料,另一個對等必須註冊PEER_GROUP_EVENT_INCOMING_DATA對等事件。 同樣地,如果傳送的對等想要接著接收資料,也必須註冊PEER_GROUP_EVENT_INCOMING_DATA對等事件。

若要接收群組中其他對等目前作用中的直接連線總數,請呼叫 PeerGroupEnumConnections 以開啟列舉,並使用 PeerGetNextItem逐一查看連線清單。

若要關閉直接連線,請呼叫 PeerGroupCloseDirectConnection 並傳入連線識別碼。

關閉和關閉對等群組

若要關閉對等群組的連線,請呼叫 PeerGroupClose,使群組控制碼失效,但不會關閉對等群組基礎結構。 對等群組資料會藉由呼叫 PeerGroupDelete來刪除。

當應用程式使用對等群組基礎結構完成時,它必須呼叫 PeerGroupShutdown