2009-05-26 11 views
1

Für eine Weile war ich daran interessiert, ein Proof-of-Concept-Chat-Programm mit C++ zu erstellen. Ich habe die Idee sehr durchdacht und sogar die Anfänge, wie ich das System gestalten sollte, niedergeschrieben, aber ich habe eine Grenze in meinem Denken erreicht, wenn es um die Implementierung geht.Was ist eine gute Implementierung eines Peer-to-Peer-Chat-Programms mit einem Server zum Zuweisen von Verbindungen in C++?

Ich möchte wissen, wie eine Implementierung eines Peer-to-Peer-Chat-Clients mit einem Server zum Routen von Verbindungen in C++ aussehen würde.

Der Server würde als zentrale Registrierung der Peers verwendet, aber nicht als primäre Verbindung verwendet. Der Server würde in keiner Weise mit den Clients interagieren, außer um Verbindungen zwischen Peers zuzuweisen, um einen optimalen Pfad zwischen Peers zu erreichen. In einer ersten Version wäre es lediglich ein Verzeichnis, zu dem alle Clients eine Verbindung herstellen, und die Clients können dann das Verzeichnis verwenden, um sich mit den anderen für den Chat verfügbaren Clients zu verbinden. (Ich hoffe das erklärt es ein bisschen mehr). :)

+0

Bitte machen Sie klar, was Sie Server tun soll. Ich mache mir im Moment viel Sinn. – ebo

+0

Sprichst du: "Zeige mir eine tatsächliche Implementierung eines in C++ geschriebenen Chat-Programms?". – ChrisW

+0

Sie werden ihn abschrecken: P –

Antwort

4

Sie sollten sich die XMPP Zeug ansehen. Es dreht sich alles um Routing und Koordination von Messaging. Es verwendet Dezentralisierung und eine Peer-to-Peer-ähnliche Architektur.

Es gibt auch viele Open-Source-Implementierungen. Zum Beispiel

+1

Danke! Dies sollte mich mit der Implementierung beginnen, um einige Beispiele ähnlicher Designs zu sehen. Ich schätze Ihre Antwort sehr! –

+0

Keine Sorgen. Es gibt genügend Quellen, um einen Ganders zu haben. Schau dir auch Pidgin und libpurple an. Sie könnten Ihre Software darauf aufbauen! –

+1

Vergessen Sie nicht, Ihren Quellcode erneut zu teilen, wenn Sie etwas von Open-Source-Software erstellen;) –

1

kann ich glaube nicht wirklich an etwas besser als das Chat-Beispiel in die Boost.Asio Dokumentation. Suchen Sie in Boost.Asio nach der Beispieldokumentation.

+0

Danke für die zusätzlichen Leads. –