Ich habe Clients, die alle mit einem einzelnen Serverprozess verbinden müssen. Ich verwende UDP-Erkennung für die Clients, um den Server zu finden. Ich habe den Client und den Server IP-Adresse und Port-Nummer austauschen, so dass eine TCP/IP-Verbindung nach Abschluss der Erkennung hergestellt werden kann. Auf diese Weise wird die Paketgröße klein gehalten. Ich sehe, dass dies auf eine von zwei Arten mit UDP erfolgen könnte:UDP Server Discovery - Sollen Clients Multicasts senden, um Server zu finden, oder sollte der Server reguläre Beacons senden?
In 1. wenn es viele Clients gibt, dann würden anfangs viele Multicast-Nachrichten übertragen werden (eine von jedem Client). Nur der Server würde die Multicast-Nachrichten von den Clients abonnieren und empfangen. Sobald der Server auf den Client geantwortet hat, hört der Client auf, die Multicast-Nachricht zu senden. Sobald alle Clients ihre Entdeckung des Servers abgeschlossen haben, werden keine weiteren Multicast-Nachrichten über das Netzwerk übertragen. Wenn der Server jedoch nicht aktiv ist, sendet jeder Client eine Multicast-Nachricht in Intervallen aus, bis der Server wieder aktiv ist und antwortet.
In 2. nur der Server würde eine Multicast-Nachricht Beacon in regelmäßigen Abständen senden. Diese Nachricht würde am Ende an alle Clients weitergeleitet werden, die die Multicast-Gruppe abonniert haben. Sobald die Clients das Paket empfangen haben, wird der UDP-Abhörsocket des Clients geschlossen und sie sind nicht länger an der Multicast-Gruppe angemeldet. Der Server muss jedoch weiterhin das Multicast-Beacon senden, damit neue Clients es erkennen können. Es würde fortfahren, das Beacon in regelmäßigen Intervallen auszusenden, ungeachtet dessen, ob irgendwelche Clients ihre Entdeckung erfordern oder nicht.
Also, ich sehe Pro und Kontra, wie auch immer. Es scheint mir, dass # 1 anfänglich zu einer stärkeren Belastung führen würde, aber diese Last reduziert sich schließlich auf Null. In # 2 würde der Server für immer einen Beacon senden.
UDP und Multicast ist ein ziemlich neues Thema für mich, also bin ich daran interessiert, herauszufinden, welcher der bevorzugte Ansatz wäre und was zu weniger Netzwerkbelastung führen würde.
Haben Sie explizit entschieden, keine standardmäßigen Service Discovery-Mechanismen zu verwenden? – Duck
Wenn Sie Standard-Service-Discovery-Mechanismen sagen, können Sie bitte klarstellen, was Sie davon halten. Ich bin dabei, zu "entdecken", was meine Optionen sind und den besten Ansatz zu nehmen. – Elan