共用方式為


如何與群組合作

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

取得同儕身份

在創建或連接到群組之前,同儕必須獲得一個同儕識別,這是用於在群組中唯一識別同儕的名稱。 若要取得對等上定義之所有對等體身份的枚舉清單,請呼叫 PeerEnumIdentities,這會傳回枚舉的句柄。 若要取得對等體身份,請使用列舉句柄和要擷取的成員數目作為參數,呼叫 PeerGetNextItem。 繼續呼叫 PeerGetNextItem,直到 pCount 參數傳回的值小於所要求的對等身分識別數目。

如果對等端的身分識別不存在,可以呼叫 PeerIdentityCreate來建立。 建立對等端身分識別之後,對等端會產生一個包含分配給該對等端的公鑰的 XML 資料塊。

呼叫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 結構表示,其中包含作用中對等方的身分、節點 ID 和 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