2016-08-01 29 views
-1

Ich habe derzeit eine Server/Client-Implementierung in C++ codiert, wo zwei Clients eine Verbindung zu einem Server herstellen. Ich erwarte aus früheren Erfahrungen (ich bin neu in C++), dass jeder Client (und der Server) einen Event-Handler haben wird, und Ereignisse werden kommen, wenn der Client eine Nachricht an den Server oder den Client senden will hat eine Nachricht vom Server erhalten. Sie können es als Chat-Server anzeigen. Das "ausgehende" Ereignis vom Client könnte ausgelöst werden, indem der Benutzer etwas in der Konsole eintippt, und das Ereignis "incoming" könnte ausgelöst werden, indem Daten vom Server empfangen werden.Ereignisbehandlung für Netzwerk in C++

Gibt es eine Standardmethode zur Codierung in C++? Ich möchte idealerweise Callback-Funktionen für jeden möglichen Ereignistyp registrieren, und die registrierte Callback-Funktion wird als Kontext an den Event-Handler zurückgegeben, wenn jedes Event empfangen wird, sodass ich jedes Event in seiner spezifischen Handling-Funktion verarbeiten kann. Und natürlich, sobald das Ereignis behandelt wurde, möchte ich, dass mein Programm in seine Ereignisschleife zurückfällt.

Irgendwelche Ideen? Ich bin sehr zufrieden mit dem ereignisgesteuerten Programmierstil und würde es lieber so behalten, wenn es möglich wäre, anstatt völlig neue Paradigmen zu lernen.

Antwort

0

C++ hat kein integriertes Event-Handler-System (anders als etwa C# und Delegaten), aber es gibt viele Bibliotheken, um das zu tun. libsigc++ is one of them.

Daher muss jede Bibliothek, die Sie für das Netzwerk verwenden, Ereignisbehandlungscode bereitstellen, entweder eigene oder eine andere Bibliothek verwenden. Und wenn Sie Ihren eigenen Netzwerkcode einführen, denke ich ehrlich, dass das Erstellen eines eigenen Ereignisbehandlungscodes gar nicht so schwierig ist, aber ich könnte verrückt sein.