{{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]]//