6 Stimmen

Entwicklung von Serverless Lan Chat Programm Hilfe!

Ich möchte ein einfaches Serverless-LAN-Chat-Programm nur zum Spaß entwickeln. Wie kann ich dies tun? Welche Art von Architektur sollte ich verwenden?

Letztes Jahr habe ich an einem TCP-, UDP-Client/Server-Anwendungsprojekt gearbeitet, das sehr einfach war (Server hört auf einen bestimmten Port/Socket und Client verbindet sich mit dem Port des Servers usw.). Aber ich habe keine Ahnung, wie man "Serverless" LAN Chat-Programm zu entwickeln. Wie kann ich das machen? UDP, TCP, Multicast, Broadcast? oder sollte sich das Programm wie Server und Client verhalten?

10voto

Stefan Schmidt Punkte 1142

Am einfachsten wäre es, UDP zu verwenden und die Nachrichten einfach über das gesamte Netz zu verteilen. Eine etwas fortgeschrittenere Version wäre, den Broadcast nur zu verwenden, um andere Knoten im Netzwerk zu entdecken.

  • Jeder Knoten führt eine Liste der bekannten Peers.
  • Nachrichten werden mit TCP an alle bekannten Gegenstellen gesendet.
  • Wenn ein Knoten gestartet wird, sendet er einen UDP-Broadcast aus, um andere Knoten zu finden.
  • Wenn ein Knoten einen Discovery Broadcast empfängt, sendet er "sich selbst" an die Quelle des Broadcasts, um sich selbst bekannt zu machen. Der empfangende Knoten fügt den Sender zu seiner eigenen Liste der bekannten Peers hinzu.
  • Wenn ein Knoten aus dem Netz ausscheidet, sendet er einen weiteren Broadcast, um die verbleibenden Knoten zu informieren, dass sie den ausgeschiedenen Client aus ihrer Liste entfernen sollen.

Man müsste auch überlegen, wie man mit dem Ausscheiden von Knoten umgeht, ohne dass diese den Rest des Netzes informieren.

1voto

frankodwyer Punkte 13870

El Spread-Toolkit ist vielleicht ein bisschen zu viel für das, was Sie wollen, aber ein interessanter Ausgangspunkt.

Aus dem Klappentext:


Spread ist ein Open-Source-Toolkit, das einen hochleistungsfähigen und störungsresistenten Messaging-Dienst für lokale und Weitverkehrsnetze bereitstellt. Spread fungiert als einheitlicher Nachrichtenbus für verteilte Anwendungen und bietet hochgradig abgestimmte Multicast- und Gruppenkommunikation auf Anwendungsebene sowie Punkt-zu-Punkt-Unterstützung. Die Spread-Dienste reichen von zuverlässigem Messaging bis hin zu vollständig geordneten Nachrichten mit Zustellgarantie.

Spread kann in vielen verteilten Anwendungen eingesetzt werden, die hohe Zuverlässigkeit, hohe Leistung und robuste Kommunikation zwischen verschiedenen Teilgruppen von Mitgliedern erfordern. Das Toolkit wurde entwickelt, um die anspruchsvollen Aspekte asynchroner Netzwerke zu kapseln und den Aufbau zuverlässiger und skalierbarer verteilter Anwendungen zu ermöglichen.

Spread besteht aus einer Bibliothek, mit der Benutzeranwendungen verknüpft werden, einem binären Daemon, der auf jedem Computer läuft, der Teil der Prozessorgruppe ist, und verschiedenen Hilfs- und Demonstrationsprogrammen.

Einige der von Spread angebotenen Dienste und Leistungen:

  • Zuverlässiges und skalierbares Messaging und Gruppenkommunikation.
  • Ein sehr leistungsfähiges, aber einfaches API vereinfacht den Aufbau von verteilten Architekturen.
  • Einfache Nutzung, Bereitstellung und Wartung.
  • Hochgradig skalierbar von einem lokalen Netz bis zu komplexen Weitverkehrsnetzen.
  • Unterstützt Tausende von Gruppen mit unterschiedlichen Mitgliederzahlen.
  • Ermöglicht die Verlässlichkeit von Nachrichten bei Maschinenausfällen, Prozessabstürzen und -wiederherstellungen sowie bei Netzwerkpartitionen und -zusammenführungen.
  • Bietet eine Reihe von Zuverlässigkeits-, Ordnungs- und Stabilitätsgarantien für Nachrichten.
  • Der Schwerpunkt liegt auf Robustheit und hoher Leistung.
  • Vollständig verteilte Algorithmen ohne zentralen Fehlerpunkt.

0voto

jdizzle Punkte 3753

Apples iChat ist ein Beispiel für genau das Produkt, das Sie sich vorstellen. Es verwendet Bonjour (Apples Zero-Conf-Netzwerkprotokoll), um Teilnehmer in einem LAN zu identifizieren. Sie können dann mit ihnen chatten oder einen Audio-/Video-Chat führen.

Ich bin mir nicht ganz sicher, wie Bonjour im Inneren funktioniert, aber ich weiß, dass es Multicast verwendet. Clients "registrieren" Dienste im LAN, und das Bonjour-Protokoll ermöglicht es jedem Host, ein Verzeichnis von Hosts für einen bestimmten Dienst abzurufen (alles ohne zentrale Verwaltung).

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X