2010-09-26 8 views
1

J'utilise C++ pour développer le côté serveur d'un jeu dont plusieurs serveurs ont besoin de communiquer entre eux à l'aide du modèle Publisher/Subscriber. Chaque serveur s'abonne à certains événements sur différents serveurs. Tous les serveurs sont situés sur le même réseau, donc la latence et la perte de paquets devraient être très faibles. La communication entre serveurs devrait être aussi efficace que possible car de nombreux événements se produisent chaque seconde.Communication interprocessus sur réseau en C++

Existe-t-il des bibliothèques que je puisse utiliser à cette fin?

Toute aide est très appréciée

+0

Quel est votre système d'exploitation et compilateur? –

+0

Le serveur est basé sur Linux et nous avons utilisé gcc pour le compiler –

Répondre

1

Vous devriez être en mesure de combiner Boost.ASIO (pour les prises E/S async) avec Boost.Signals (pour le modèle d'observateur) ou Boost.Signals2 (threadsafe version de Boost.Signals) pour obtenir ce que vous voulez.

Il existe un exemple simple montrant comment cela peut fonctionner here. Notez que cela utilise un wrapper sur Boost.Signal, mais vous avez l'idée.

1

Vous parlez essentiellement d'une bibliothèque de socket. C'est différent de IPC, qui fait référence à la communication interprocessus entre deux ou plusieurs processus sur le même ordinateur - par opposition à sur un réseau. La communication réseau nécessite une programmation par socket, vous avez donc probablement besoin d'une bonne bibliothèque de socket hautes performances. Boost.ASIO est une très bonne bibliothèque de socket portable C++ qui fournit à la fois des sockets TCP et UDP.

+2

En fait, IPC peut signifier à la fois: la communication de plusieurs processus sur le même ordinateur ou plusieurs ordinateurs, connectés via le réseau. Néanmoins, les sockets TCP/IP sont l'outil de choix pour cela. – Dubu

Questions connexes