{{tag> Xenial réseau programmation IPC RPC}} ====== ZeroMQ (ØMQ) ====== ZeroMQ est une librairie de [[wpfr>Communication_inter-processus|communication inter-applications (IPC)]], [[wpfr>Transmission_Control_Protocol|TCP]], [[wpfr>Multicast|multicast]]… basée sur les [[wpfr>Socket#Logiciel|socket]] ethernet.\\ Elle est très simple d'utilisation et supporte plus de 30 langages de programmation ===== Installation ===== Voici la traduction du §**To build on UNIX-like systems** de la page [[http://zeromq.org/intro:get-the-software]]:\\ “Si vous avez le choix, le système d'exploitation le plus confortable pour développer((et déployer??… l'installation sous Windows, à ce jour (juillet 2017) est compliquée)) avec ZeroMQ est probablement Ubuntu.” :-D * Assurez-vous que les librairies suivantes sont installées:\\ sudo apt-get install libtool pkg-config build-essential autoconf automake installed * Vérifiez que //uuid-dev// package, //uuid/////e2fsprogs// RPM ou équivalent sont également installé:\\ dpkg -l e2fsprogs * Extraire les sources de l'archive .tar.gz (téléchargée au préalable sur [[http://zeromq.org/intro:get-the-software]] )\\ tar xvfz zeromq-4.2.1.tar.gz * Compiler:\\ ./configure make * Installer ZeroMQ:\\ sudo make install * Enfin (dans tous les cas) lancez:\\ sudo ldconfig * Installer aussi:\\ sudo apt-get install libzmq-dev Pour voir les options de configuration, lancer:\\ ./configure --help Lisez //INSTALL// pour plus de détails ===== Premiers pas ===== Dans un répertoire de tests ou de développements, le répertoire //workspace// pour la suite, récupérons les exemples avec [[:git]]:\\ git clone --depth=1 https://github.com/imatix/zguide.git Dans un premier terminal, lançons un serveur: cd ~/workspace/zguide/examples/C++ g++ hwserver.cpp -std=c++11 -lzmq -o hwserver ./hwserver Dans un second terminal, lançons un client: cd ~/workspace/zguide/examples/ python hwclient.py Le client envoie des requêtes "Hello" au serveur qui va lui répondre "World" Il est défini ci-dessus un serveur en C++ et un client en Python mais vous pouvez évidemment utiliser le même langage pour les deux, d'autres langages pour l'un et l'autre… Un autre exemple intéressant pour débuter est le //psenvpub// (publicateur⇔publisher) et //psenvsub// (lecteur⇔subscriber) ===== Liens ===== * **(en)** [[http://zeromq.org|zeromq.org, le site officiel]] * **(en)** [[https://github.com/zeromq|github.com/zeromq, la page du dépôt]] * [[https://www.geek-directeur-technique.com/2011/09/21/zeromq-la-super-bibliotheque-reseau|Un article en français qui explique bien zeromq]] ---- //Contributeur principal: [[:utilisateurs/bcag2]]//