Freigeben über


Herstellen einer Verbindung mit einer Peergruppe

In diesem Thema wird erläutert, wie eine Anwendung mithilfe der Peergruppierungs-APIs eine Verbindung mit einer Peergruppe herstellt.

Beitreten zu einer Peergruppe

Um einer Peergruppe beizutreten, rufen Sie PeerGroupJoin auf, und übergeben Sie den Identitätsnamen des Peers und der Einladung (und einen optionalen PNRP-Cloudnamen, wenn der Cloudname in der Einladung mehrdeutig ist).

Bei erfolgreicher Ausführung gibt PeerGroupJoin ein Handle an die Peergruppe zurück.

Wenn der Peer zuvor der Peergruppe beigetreten ist und dann das Handle geschlossen hat, sollte die Peergruppe erneut geöffnet werden, indem PeerGroupOpen aufgerufen und der Name der Peergruppe übergeben wird. Dieser Aufruf gibt ein neues Peergruppenhandle zurück.

Sobald die Peergruppe erfolgreich beigetreten wurde, kann der Peer eine direkte Verbindung mit der Peergruppe herstellen und durch Aufrufen von PeerGroupConnect mit der Interaktion beginnen. Nach der Verbindung wird der Peer als "online" betrachtet.

Wenn eine Anwendung zu diesem Zeitpunkt nicht mit der Gruppe interagiert, kann sie "offline" bleiben. Wenn sie sich für die direkte Teilnahme an der Peergruppe zu einem späteren instance entscheidet, wird sie durch einen nachfolgenden Aufruf von PeerGroupConnect online geschaltet. Nachdem ein Peer der Peergruppe beigetreten ist, muss er mindestens einmal eine Verbindung herstellen, bevor er Datensätze in der Peergruppe veröffentlichen kann.

Öffnen einer Peergruppe ohne Verbindung (offline)

Häufig möchten Sie möglicherweise, dass eine Anwendung eine Verbindung mit einer Peergruppe herstellt, aber nicht direkt daran teilnimmt, indem Sie Datensatzupdates empfangen und veröffentlichen, aber keine Datennachrichten senden oder empfangen. Eine Anwendung befindet sich unmittelbar nach dem Aufruf von PeerGroupCreate, PeerGroupJoin oder PeerGroupOpen in diesem Offlinezustand.

Eine Offlineanwendung kann jederzeit online gehen, indem PeerGroupConnect aufgerufen wird. Nach der Verbindung kann eine Peergruppe erst offline geschaltet werden, wenn alle anderen Anwendungen, die dieser Identität zugeordnet sind und diese Gruppe freigeben, ebenfalls über geschlossene Verbindungen verfügen.

Eine Peergruppe ist eine freigegebene Ressource, wobei dieselbe Peergruppe für mehrere Anwendungen verfügbar ist. Wenn mehr als eine Anwendung für dieselbe Identität und der Windows-Benutzer dieselbe Peergruppe verwendet, verwenden sie auch die zugrunde liegende Datenbank und die gleichen Verbindungen (nachbar und direkt). Wenn eine dieser Anwendungen PeerGroupConnect aufruft, stellen alle anderen Anwendungen für diese Identität bzw. den benutzer, der an der Gruppe teilnimmt, ebenfalls eine Verbindung mit der Gruppe her. Wenn ein Datensatz von einer Anwendung hinzugefügt wird, während die Gruppe offline ist, können ihn auch andere Anwendungen sehen. Daher muss eine Anwendung jederzeit online sein.

Herstellen einer Verbindung mit einer Peergruppe (Online)

Um mit der Teilnahme an einer Gruppe zu beginnen, rufen Sie PeerGroupConnect auf, nachdem Sie die Gruppe erstellt, hinzugefügt oder geöffnet haben. In diesem Zustand können direkte Verbindungen mit anderen Peers geöffnet werden, die an derselben Gruppe teilnehmen, indem PeerGroupOpenDirectConnection aufgerufen wird.

Um zu erkennen, ob ein Verbindungsversuch fehlgeschlagen ist, registrieren Sie sich für das PEER_GROUP_EVENT_CONNECTION_FAILED-Ereignis. Dieses Ereignis wird ausgelöst, wenn die Gruppierungsinfrastruktur kein anderes Mitglied finden kann, mit dem eine Verbindung hergestellt werden kann, oder wenn die Verbindung fehlschlägt, bevor die Gruppendatenbank synchronisiert wird und keine andere Verbindung hergestellt werden kann.

Obwohl mehrere Anwendungen, die auf dem Peer ausgeführt werden und an derselben Gruppe mit derselben Peeridentität teilnehmen, möglicherweise offline sind, führt ein Aufruf von PeerGroupConnect durch eine der Anwendungen dazu, dass alle Anwendungen online werden.

Wenn eine Anwendung auf dem Peer mit der Gruppe verbunden ist, werden auch alle anderen Anwendungen, die PeerGroupJoin oder PeerGroupOpen aufrufen, sofort verbunden. Wenn eine Anwendung PeerGroupClose aufruft, wird das Handle nur für diese Anwendung geschlossen. Daher gibt ein nachfolgender Aufruf von PeerGroupOpen durch die Anwendung ein neues Gruppenhandle zurück, und die Anwendung wird sofort online geschaltet, wenn andere Anwendungen, die an derselben Gruppe teilnehmen, noch verbunden sind.

Senden und Empfangen von Daten

Zum Senden und Empfangen von Daten zwischen bestimmten Mitgliedsknoten in der Gruppe müssen direkte Verbindungen mit den Mitgliedern hergestellt werden, mit denen Sie interagieren möchten. Das Herstellen einer Direktverbindung ist ein asynchroner Aufruf von PeerGroupOpenDirectConnection, der das Handle für eine verbundene Gruppe sowie die Identität des Peers innerhalb der Gruppe übergibt, mit der Sie eine Verbindung herstellen möchten. Diese Methode gibt eine Verbindungs-ID zurück. Wenn der Aufruf erfolgreich ist, wird auf dem Peer ein PEER_GROUP_EVENT_DIRECT_CONNECTION-Ereignis ausgelöst, das die Verbindungs-ID überprüft.

Um direkte Verbindungen von anderen Online-Peers zu empfangen, registrieren Sie sich für das PEER_GROUP_EVENT_DIRECT_CONNECTION-Ereignis mit einem Aufruf von PeerGroupRegisterEvent.

Nachdem eine Direktverbindung erfolgreich hergestellt wurde, kann die Anwendung mit dem Senden von Daten mit Aufrufen von PeerGroupSendData beginnen und die gültige Verbindungs-ID übergeben. Die Reihenfolge von mehrteiligen Datenübertragungen wird von PeerGroupSendData verarbeitet. Anwendungen sollten jedoch einen geeigneten Protokollstapel für die Verarbeitung der von diesem API-Aufruf zurückgegebenen undurchsichtigen Daten implementieren.

Um Daten über eine Direktverbindung zu empfangen, muss sich die Anwendung für das PEER_GROUP_EVENT_INCOMING_DATA-Ereignis bei PeerGroupRegisterEvent registrieren. Der Ereignishandler ist für das Abrufen und Sortieren der undurchsichtigen Daten und die Übergabe an die Anwendung verantwortlich. Diese Daten werden im Ereignishandler abgerufen, indem PeerGroupGetEventData mit dem Handle für die registrierten Ereignisse aufgerufen wird.

Eine Direktverbindung wird geschlossen, indem PeerGroupCloseDirectConnection aufgerufen und die Verbindungs-ID übergeben wird, die durch einen vorherigen Aufruf von PeerGroupOpenDirectConnection abgerufen oder in den Ereignisdaten für PEER_EVENT_GROUP_DIRECT_CONNECTION empfangen wurde.